虚拟化和容器+去中心化网络

虚拟化和容器对信息处理技术产生了深远的影响 - 以几年前无法预见的速度完成了创新和扩容。这些创新就包括云计算,它可以按小时租用服务器。很快微服务和无服务器架构就出现了,其计算能力都是以秒和微秒为单位的。高度可扩容性和并发计算资源以及低成本按需定价催生了许多新型的商业模式,并实现了指数级增长 - 所有这些都不需要大规模重组或大量资本支出。

去中心化与虚拟化和容器一样在10年或更久以前都处于类似的阶段。不过现在越来越多的创新者和开发者已经创建并大量使用了各种基本原理、启用组件和经济模型。使用案例已经从纸面计划转移到了生产实际中,而且生态系统在技术堆栈的所有层面上都在快速发展。

这两种技术的结合将会是整体大于部分的典范之一。使用成熟的技术来扩展和部署服务器规模,然后再结合创新性的网络设计,会使后者(网络)获得前者的优势 - 极大的灵活性以及良好的规模和成本效益。

简而言之,虚拟化和容器将会为去中心化网络带来类似于先前在云计算中观察到的效果 -在灵活性和可扩展性方面可达到几个数量级。

虚拟化和容器化子节点

在虚拟化和去中心化网络中,子节点在完整的节点内虚拟化。这种虚拟化可以通过容器化架构来实现,这样就可以为去中心化应用程序开发人员提供更高层次的性能和更广泛的选择机会。这种性能和灵活性的结合类似于传统的集中式云和微服务系统。容器可以细分为几个主要的组件,这些组件又能通过码头化的Linux操作系统完成封装 - 允许每个节点以一种与操作系统无关的方式托管。

一些关于容器、LXC和Docker的背景

在深入研究这种去中心化架构之前,我们先谈谈容器和一些底层技术组件(即LXC和Docker)的背景。

容器

容器是一种标准软件单元,它将代码及其所有依赖项都打包起来,这样应用程序就能从一个计算环境快速可靠地运行到另一个计算环境。容器镜像是一个独立的轻量级可执行软件包,它含有运行应用程序需要的所有元素:代码、运行时间、系统工具、系统数据库和设置。

容器镜像在运行时变成容器。无论基础设施如何,容器化软件都能始终运行。尽管开发和升级版本之间存在差异,但容器完全可以将软件与其环境隔离开来,并确保软件能够稳定的操作。

容器还可用于帮助提高操作效率和部署灵活性。容器的使用以及有效的容器管理系统可以使开发操作团队能够构建、部署和重新配置服务器、应用程序、微服务甚至任务。

Linux 容器 (LXC)

LXC(LinuX容器)是一种操作系统级的虚拟化方法,它可以安全地将一个或多个过程与运行单个LinuX系统的其他过程隔离开来。通过使用容器,可以隔离资源,限制服务,配置过程,从而使操作系统拥有单独的过程ID空间、文件系统结构和网络接口。多个容器可以共享一个内核,但每个容器都可以被限制为只使用一定数量的资源,如CPU、内存和I/O。这样应用程序、操作人员及其他过程就可以在单个主机上作为多个轻量级的独立Linux事项运行。

Docker和Docker引擎

Docker是在LXC的基础上构建的,它可以用来支持镜像管理和部署服务。Docker并不是LXC的替代品,因为LXC指的是Linux内核能力(特别是名称空间和控制组),它可以对程进行沙箱处理并控制其资源分配。Docker在内核特性的低级基础之上配备了高级工具功能,包括机器间的便携式部署、以应用程序为中心的应用、自动构建、版本控制、组件重用、共享、工具生态系统等等。

Docker引擎是一种运行时间服务器端引擎,它由长时间运行的监控过程(称为Docker)和API组成,这些API会指定与Docker监控程序通信和联通的接口。通过使用Docker引擎,可以详细地配置服务器,以长久或短暂的方式显示Docker镜像,分割和管理服务器资源(或在SKALE网络中分割和管理节点资源)。

SKALE网络中的虚拟化和容器

SKALE网络是最早在节点架构中采用虚拟化技术的网络之一。通过将虚拟化和容器化与独特的池式验证模型相结合 - 采用随机节点选择和频繁节点轮换来增强网络安全性 - SKALE网络在安全性、规模和效用性上就不会存在矛盾。

SKALE网络是一个由弹性侧链组成的可配置网络,它支持高吞吐量和短时交易,不像公共主网那样会产生较高的交易成本。该网络具有扩展存储能力,允许嵌入式连接和链间消息传递,可以很容易地连接到以太坊主网。所有相关操作都是通过高效、可扩容和防串通的池式交易验证功能和安全模型来完成的。

虚拟化子节点

每个弹性侧链都是由随机指定的节点组成的,这些节点运行的是SKALE监控程序,遵循的是SKALE共识过程。SKALE网络中的节点不会局限于单个链,而是会通过虚拟化子节点跨跃多个侧链完成操作。

换句话说,每个节点都是虚拟化的,它们能够通过子节点架构作为一个独立数量侧链的验证者参与进来。这种多路复用能力是通过部署在网络中每个节点内的容器化架构实现的。

验证者节点是由一个节点核心和128个虚拟化子节点组成的。

SKALE网络中如何使用容器

容器镜像可以用来控制SKALE验证者节点,将其分割成128个子节点。验证者可以先使用一个或多个服务器 - 满足网络中节点操作规范的方式 - 然后通过SKALE管理器完成注册。(关于服务器要求方面的详细信息,请参阅SKALE验证者常见问题解答。)

SKALE管理器是一组运行在以太坊主网上用于控制网络中节点操作的智能合约。这一点需要注意,因为它是集中计算区别于分散计算的强化原则。在集中云计算网络中,计算资源通过集中的集线器管理。在SKALE网络中,节点资源通过位于以太坊主网上的智能合约管理。这种一目了然的的方法使得网络具有极大的自主性和独立性。

选择新验证者节点时,SKALE管理器会通过安装Docker引擎和SKALE管理插件来管理验证者提供的服务器。这个插件是在接受SKALE管理器输入信息后,专门用来执行由特定智能合约指定的操作的。

SKALE管理器是一组运行在以太坊主网上用于控制网络中节点池供应和操作的智能合约。本文中使用的术语“SKALE 管理器”是指一个或多个用于完成特定功能或操作的以太坊主网智能合约。

容器化的优势

关于容器在云计算以及在无服务器和基于微服务的架构中的优势,在很多文章中都有表述。考虑到系统的分散性质,这些优势尽管在某些情况下会有些不符表述,但大多数在本文中也适用。

操作灵活性

使用Docker容器的一个很大的优点是它可以使节点的设置和操作变得更为简单灵活。SKALE网络中的节点操作人员只需要提供相应的硬件,安装Docker引擎和SKALE管理插件,然后将节点注册到SKALE网络中即可。SKALE网络通过SKALE管理器设置节点、提供子节点、分配和重新分配侧链以及收集节点的衡量标准等。容器的操作灵活性减少了节点操作人员需要部署的开发操作资源量。

网络弹性

与操作灵活性相关的是网络弹性。使用容器时,通过一种快速切换机制来解除故障服务器的配置并在新服务器中激活一组新的虚拟化子节点,就能够相对轻松地解决掉服务器的中断问题。使用标准镜像是指可以启用和快速运行新的容器,这样就可以将流量重新定向到工作节点。

动态链大小

使用Docker可以让SKALE网络能在节点内完成资源动态分配,这样就能够将资源使用情况与侧链大小对应起来。用户级资源包括弹性区块链大小、文件存储容量和交易吞吐量。这种情况下,容器就可以用来管理内存、CPU使用率、I/O使用率和其它系统/内核级资源。有效的资源管理会使每个侧链能够在适当的服务级别上运行,同时还能保持安全和容错的操作环境。

透明性

使用Docker容器会使节点和子节点的操作背景显得非常透明。开源软件是分散计算中的一个基本原则,因为了解组成解决方案的组件并能够验证每个组件是至关重要的。对于SKALE网络中节点和子节点的Docker镜像组成来说,这没有什么不同。将这些组件打包成Docker镜像也就意味着任何用户、开发人员、验证者和其它相关方都可以轻松地检查每个镜像,确定和验证其内容。它还允许自动化软件包在镜像上运行测试,以满足任何解决组合和/或安全问题。

可组合性

可组合性是复杂系统的一个设计原则,它处理的是组件之间的相互关系以及组件之间松散或紧密的联系程度。例如,EVM的高度可组合性设计允许SKALE网络用权益证明算法代替工作量证明共识算法。这种相同的可组合性也意味着可以用不同的算法改变和代替原有算法,以满足特定侧链的需要。

适用性

与可组合性相关的是适用性,它可以理解为SKALE网络添加新特性、组件和功能的能力。例如,链用户可能会希望运行自己对EVM的扩展程序或在一个新的共识协议中完成交换,网络可能会支持通用去中心化文件存储、零知识证明协议或跨链消息传递等。SKALE网络很容易能够拥有这些功能,然后再通过Docker和容器化架构使其成为网络的标准操作项目。

本文是两篇系列文章中的第一篇。第二篇也就是最后一篇将会讨论容器和SKALE-EVM,通过随机节点选择和频繁节点轮换实现网络安全等。