0

0

模块化 vs. 单体化架构已死

DDD

DDD

发布时间:2024-05-06 08:22:01

|

1138人浏览过

|

来源于ChainCatcher

转载

自从 rollups 的兴起以来,区块链的扩展一直集中在模块化与单体化的争论上。最初,这种二元对立是一种有用的思维模型,用于推理区块链的可扩展性,但是现在,这两个阵营都已经超越了它。

如今,模块化与单体化的对比给我们的可扩展性思维模型带来了不必要的限制。

那么,有什么替代方案呢?

在本文中,我们展示水平扩展与垂直扩展一直是区块链可扩展性的基本框架并解释采用水平扩展与垂直扩展如何带来更好的扩展解决方案。

理解模块化 vs. 单体化

首先,是一些定义:

模块化链将区块链的核心功能分离为不同的层。

单体化链将所有核心功能集成到单一的、相互连接的层中。

我们可以将“层”视为“机器”——单体化链有一个运行所有任务的单一验证器节点,而模块化链有多个(2-3个)运行不同任务的全节点。

模块化 vs. 单体化架构已死

例如,Rollup 通常有两个运行节点:一个用于执行的 Rollup 全节点,以及一个用于结算+数据可用性(DA)的以太坊全节点。而 validium 可能会利用三个运行节点:一个用于执行的Rollup 全节点,一个用于结算的以太坊全节点,以及一个用于 DA 的备用数据可用性层全节点。

模块化将区块链的任务分配到至少两个全节点上。通过这样做,模块化区块链在构建每个区块时可以利用多台计算机的计算能力。

这是水平扩展的一种形式。

模块化在思考区块链扩展性时很有用,因为它是一种水平扩展的类型。

模块化 vs. 单体化架构已死

另一方面,大多数单体化阵营选择通过软件优化、实现并行虚拟机、数据管道、更快的网络协议和(最值得注意的是)更强大的硬件来扩展。从本质上讲,单体化链试图从单个全节点中提取尽可能多的计算能力。

这是垂直扩展的一种形式。

批评者认为,这种方法趋于集中化:如果依靠增加单个节点的功率来扩展,则不可避免地会遇到底层硬件的物理限制,并被迫增加硬件要求以进一步扩展。

然而,这种批评是不正确的,因为并非所有的单体化链都只依赖于垂直扩展。

例如,Near 是一个基于分片网络架构构建的单体化L1 区块链。这意味着Near 的全节点负责所有任务(即执行、结算和数据可用性),但它们只负责Near全局状态的一小部分。因此,Near 通过根据状态而不是任务来分配工作,从而利用了多台计算机的计算能力(就像模块化链一样)。

模块化 vs. 单体化架构已死

我们可以看到,论是单体化链还是模块化链,在它们实现的扩展技术方面都没有限制两者都可以进行水平扩展和/或垂直扩展。

此外,模块化与单体化的争论始终植根于水平与垂直扩展的框架中。从严格的技术角度来看,模块化倾向于水平扩展,这是其设计所固有的,而化则倾向于垂直扩展。

现在我们已经成功推出了模块化链,额外的扩展优势不再在于“更加模块化”。现在的焦点是链如何利用水平或垂直扩展技术。

采用水平vs.垂直思维模型使我们能够轻松推理每个链在此过程中所做的权衡。

重新定义对话:水平 vs. 垂直扩展

在深入研究水平vs.垂直扩展框架之前,重要的是要承认它的起源可以追溯到 20 世纪 70 年代,当时分布式计算研究为水平扩展概念奠定了基础。如今,所有的扩展技术都可以归类为水平或垂直扩展。

垂直扩展

垂直扩展会增加每个节点的硬件利用率或硬件要求。在区块链中,这通常是通过并行虚拟机(即多线程进程)等软件优化来完成的。

一个常见的例子是EVMSVM

EVM顺序执行事务,而 SVM 则是并行执行事务。SVM 通过利用更多的 CPU 核心来实现这一点,因此 SVM 每秒可以比 EVM 处理更多的事务。注意:这种垂直扩展类型是 Eclipse L2 背后的基础。

在权衡方面,垂直扩展受到可用硬件的限制,由于硬件需求的增加而趋于集中化,并且与水平扩展相比可扩展性较差。

模块化 vs. 单体化架构已死

水平扩展

另一方面,水平扩展通过将工作负载分散到多个节点上来增加系统可以访问的机器数量。如前所述,模块化链本质上是将任务分配到多台机器上。然而,链通常可以通过分片实现更大程度的水平扩展。

模块化 vs. 单体化架构已死

=nil;这里提供了一个有用的例子。

去年11月,=nil;基金会推出了一种可验证的分片架构,称为 zkSharding,它是新的以太坊 L2 的基础。=nil; 设计的核心是将其全局状态划分到多个分片上。每个分片均由=nil;的去中心化委员会运行,他们构建区块并管理跨分片交易。此外,每个分片都会生成一个有效性证明,该证明会发送到主分片进行聚合,然后在以太坊上发布和验证。=nil;通过两种方式利用水平扩展的能力

  • 首先,=nil;是一个模块化区块链,它利用以太坊的强大共识和数据可用性作为保证,从而将任务分配在多个全节点上。

  • 其次,=nil;是一个分片区块链,因此将部分状态分布在许多节点上。

这两种技术都减轻了任何单个机器需要承担的负载,并提高了网络的总体可扩展性。

那么,水平扩展的权衡有哪些呢?这可以归结为两点:网络和共识的复杂性以及机器或分片之间的异步通信。

以太坊可扩展性的终局之战

水平扩展和垂直扩展均不限于模块化或单体化架构。这就是为什么水平vs.垂直扩展框架提供了更多空间来探索新的解决方案,使模块化区块链更具可扩展性。

例如,一种选项垂直扩展模块化堆栈的一层。一种常用的方法是实现并行虚拟机,从而提高执行吞吐量。正如上面提到的,Eclipse 正在利用 SVM 和其他Rollups,比如Starknet,实现 BlockSTM 以实现并行化。

但是,垂直扩展始终受限于单台机器的限制,我们不能打破物理定律

一种解决方案可能是选择通过分片实现水平扩展。

当前的模块化设计才刚刚开始触及水平扩展的全部潜力。通过分片,我们可以利用任意数量机器的计算能力(而不仅仅是2-3台机器分担任务)。

换句话说,许多机器可以并行运行相同类型的任务。这就是以太坊和Celestia希望分别通过 Danksharding 和数据分片实现的目标。但是,分片本质上并不局限于数据可用性层——它还可以与执行相结合(如 =nil; L2 的情况)。

模块化 vs. 单体化架构已死

如果我们将通过模块化堆栈实现的水平扩展与分片提供的水平扩展相结合,我们将获得可用计算能力的大幅增加

但我们可以做得更好……

区块链可扩展性的最终目标将融合水平和垂直扩展,从而产生具有并行虚拟机的分片区块链。

模块化 vs. 单体化架构已死

=nil;基金会,我们正在系统地朝着这个最终状态设计迈进=nil; 的L2 通过利用模块化、水平可扩展的架构 (zkSharding) 和垂直扩展的验证器实现(分片内并行化),采取了一条积极的扩展路线图。

因此,=nil;的设计可以在不牺牲状态、流动性或用户碎片化的情况下实现全球规模。

模块化 vs. 单体化架构已死

如果对水平扩展和 zkSharding 感到好奇的话,可以到 =nil; 基金会的 Discord 和 X 来加入对话。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

326

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

233

2023.10.07

eclipse教程
eclipse教程

php中文网为大家带来eclipse教程合集,eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。php中文网还为大家带来eclipse的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

188

2023.06.14

eclipse怎么设置中文
eclipse怎么设置中文

eclipse设置中文的方法:除了设置界面为中文外,你还可以为Eclipse添加中文插件,以便更好地支持中文编程。例如,你可以安装EBNF插件来支持中文变量名,或安装Chinese Helper来提供中文帮助文档。本专题为大家提供eclipse设置中文相关的各种文章、以及下载和课程。

794

2023.07.24

c语言编程软件有哪些
c语言编程软件有哪些

c语言编程软件有GCC、Clang、Microsoft Visual Studio、Eclipse、NetBeans、Dev-C++、Code::Blocks、KDevelop、Sublime Text和Atom。更多关于c语言编程软件的问题详情请看本专题的文章。php中文网欢迎大家前来学习。

588

2023.11.02

Eclipse版本号有哪些区别
Eclipse版本号有哪些区别

区别:1、Eclipse 3.x系列:Eclipse的早期版本,包括3.0、3.1、3.2等;2、Eclipse 4.x系列:Eclipse的最新版本,包括4.0、4.1、4.2等;3、Eclipse IDE for Java Developers等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

167

2024.02.23

eclipse和idea有什么区别
eclipse和idea有什么区别

eclipse和idea的区别:1、平台支持;2、内存占用;3、插件系统;4、智能代码提示;5、界面设计;6、调试功能;7、学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

135

2024.02.23

eclipse设置中文全教程
eclipse设置中文全教程

本专题整合了eclipse设置中文相关教程,阅读专题下面的文章了解更多详细操作。

105

2025.10.10

html编辑相关教程合集
html编辑相关教程合集

本专题整合了html编辑相关教程合集,阅读专题下面的文章了解更多详细内容。

38

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 1.9万人学习

go语言基础与基本函数
go语言基础与基本函数

共17课时 | 3.1万人学习

Css3入门视频教程
Css3入门视频教程

共21课时 | 3.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号