hi 欢迎来到小秘课堂第一期,今天我们来讲讲 CITA 架构与云计算服务之间的那些事儿,欢迎主讲人谢晗剑
讲师:谢晗剑
编辑:vivi
微服务架构
那一年架构大师 Martin Fowler 写了一篇名字叫做 Microservices 的著名文章,微服务的思想却是在那之前就流行在架构师的圈子里面。这思想与结构化编程的理念一脉相承,即软件系统的功能应该切分为尽可能的简单的模块,然后通过某种标准的方式组装起来。在进程内我们可以将代码解耦成一个个类和对象,通过对象间消息把它们组合起来;在UNIX系统里面我们实现了一个个极小而专一的工具,利用管道组合这些小工具从而完成各种复杂的任务;于是在企业级架构中,将系统拆分成一个个独立的应用,相互之间通过HTTP协议或是企业消息总线进行连接,也就是自然而然的事情了。
每一个微服务都是一名匠人,它只专注于一件事情,而且能够很好的完成它。将一个软件系统重构为微服务架构的过程,就是不断的将单个独立的任务发掘出来并且将其代理给一位位值得托付的工匠的过程。(还真是像我们发展创业团队的过程哟 0_0)
如果我们仔细观察交易从被用户构造出来发送到网络开始的整个处理流程,我们会发现主要有这样几个阶段:
-
交易在网络上被广播,扩散。
-
网络给交易安排一个唯一而且递增的“序号”,例如交易所在的区块高度+区块内 index 就是一个“序号”。
-
每个节点都看到了交易的序号,并且按照顺序对交易进行处理,例如将交易作为参数传给智能合约就是一种处理方式。
-
用户通过节点提供的接口,获得交易被处理后的结果
这几个主要阶段正好对应了cita里面的四个主要微服务:
-
网络服务
-
共识服务
-
执行服务
-
RPC服务
cita 网络中的每一个全节点都会运行这一组服务。由于这些服务可以运行在多台服务器上,因此 cita 里面的节点概念不再和服务器一一绑定,而是变成了由一台或者多台物理服务器构成的集群。集群运行在企业内部,因此同一节点的微服务之间可以相互信任,共享相同的安全边界。
微服务通过消息中间件连接。网络负责与 P2P 网络中的其它节点建立连接,交换消息。无论交易被发送到哪个节点,都会被扩散并被本节点的网络酱接收到,网络酱接收到这个交易之后,会通过消息的形式把它递交给共识酱。共识又会请网络酱帮忙和其他节点的共识酱交换消息,以对这个交易的序号达成共识。在共识完成之后,执行会接手,调用某个智能合约对交易进行处理。最后用户通过询问 RPC,获取交易的处理结果。(呼... 终于完成,呀比~ \(^o^)/ )
通过这样一种相互配合、团队协作的流水线作业,cita 节点将一个个交易搬到了区块链上。在这样一种作业方式中,节点不再是一位需要自己完成所有工作的小作坊老板,而是一座拥有大量熟练工人的工厂。每一位微服务都专心一件事情,因此可以把这件事做得很好很高效。不仅如此,流水线的每个环节都可以有很多选项:我们可以请 Tendermint 来负责共识,也可以请 PBFT 或者 PoA 来做这件事,只要结果一样,流水线其他环节的工人完全不会意识到他们是在和共识部门的哪位工人在协作。在 cita “工厂”里面,组件可插拔不是口号,而是现实。
同样的,小作坊受生产流程所限,产出上限固定,无法应对销售旺季交易量保障的情况;而 cita 工厂由于建立了一套标准的协作体系,只需要增加更多的流水线和工人就能够从容应对这些情况!哦也(^-^)V
Scalability
cita 的这个特点就是传说中的 scalability。
“等等,scalability 不是区块链的一个尚未解决的问题吗?你们不是吹牛吧?” ?_?
目前区块链网络的 scale 问题源自其多复本的设计思路,由于每一个交易都会被复制到所有节点上处理和验证,节点在验证交易的同时也是在进行重复计算,造成了整个网络的交易处理能力约等于网络中单个节点的处理能力,无论怎么增加节点都没有用。我们常常讨论的,就是如何能做出一个方案,在保证安全的前提下能够通过增加节点来提高区块链的处理能力,行话又称为水平扩展(scale out)。
我们知道,scalability 可以分为两种,除了上述水平扩展外,还有垂直扩展(scale up):如果增加节点没用,能不能想办法提高单个节点的能力呢?既然整个网络的处理能力约等于网络中的单个节点,如果单个节点的能力很强,那么整个网络的处理能力不是就提高了吗?
这就是 cita 具有 scalability 的原因。通过节点的微服务架构,cita 可以做到节点内的水平扩展,从区块链这个层面看,便是节点在垂直扩展了。相较于国际大公司通过专有硬件来提升单节点处理能力的方案,cita 只需要运行在普通PC 服务器上,不仅能够为用户节约成本,水平扩展能力也比单机架构更强。
这么好的思路,为什么公有链不用呢?
敏锐的读者可能已经发现了问题所在:中心化。
对于公有链的设计者来说,节点应该被尽可能多的用户运行在尽可能多的计算机上。运行一个计算机集群虽然能提升节点能力,但是维护集群所需要的专业知识以及资源投入,却是普通用户不具备的。如果在公有链中使用这样的设计,必然出现的情况是只有少数具有专业知识、能够投入一定资源的人才有能力运行全节点,这与公有链的节点对等无中心的目标是相悖的。
cita 则是针对企业级用户设计的区块链。作为 cita 的目标用户,企业天生就具有运行一个集群的资源和能力。在云计算以及容器化技术已经非常成熟的今天,企业级用户可以轻松的将 cita 服务部署到多台服务器上,并对这些服务进行管理。相较于其他区块链技术,cita 微服务架构能够真正发挥云服务的潜力,可以说,cita 不仅仅是针对企业级用户设计,也是针对云服务设计的区块链。如果您有兴趣成为我们的合作伙伴或者用户,欢迎与我们联系。联系方式:contact@cryptape.com,欢迎来撩~
关于讲师
谢晗剑(Jan Xie)
秘猿科技 CEO。Nervos Foundation 联合创始人,首席架构师。以太坊 Ethereum 核心研发团队成员。中国以太坊及区块链技术社区 EthFans 发起人。曾担任知名数字货币交易所架构师与核心开发者,设计与开发了世界上第一个开源数字货币交易所 Peatio。
Github:https://github.com/janx
秘猿科技 repo:https://github.com/cryptape
连接开发者与运营方的合作平台 CITAHub:https://www.citahub.com/
有任何技术问题可以在论坛讨论:https://talk.nervos.org
相关推荐
@citahub/cita-sdk严格遵守Semver,并与MAJOR和MINOR版本的兼容,例如, @citahub/cita-sdk@0.20.x将与CITA@0.20完美配合 注意 支持Websocket,但目前尚未在CITA中完成发布/订阅。 贡献 资料库 科技栈 节点:9.4.0 ...
水平可伸缩性:借助微服务架构,可以轻松地将逻辑节点扩展到服务器集群。 节点管理员可以简单地通过在高负载下添加更多PC服务器来增加系统容量。 管理员甚至可以使用专用服务器为热点帐户提供服务。 在一个节点的...
CITA服务流程监控CITA微服务和RabbitMQ进程的运行状态,CPU,内存使用情况,IO 区块链数据健康监控块高度历史记录,块间隔,块间隔历史记录,配额,交易历史记录量,TPS,磁盘占用率,数据大小增长趋势 运行环境...
2.1 系统架构 本系统是一个基于纠删码分片存储的区块链系统。每个节点都有自己独特的编码块,通过纠删码技术将原始数据编码成多个编码块,并将其分配到不同的节点上存储。这样可以降低数据存储的冗余度,并提高系统...
CITA Cloud Proto 为每个微服务设计grpc界面。 用法 [ dependencies ] cita_cloud_proto = { git = " https://github.com/cita-cloud/cita_cloud_proto " } 生成python代码 pip install grpcio grpcio-tools mkdir ...
搜索服务,预约约会并通过cita进行付款。 访问以查看业务仪表板。目录安装如何使用安装将目录更改为客户端,并安装客户端依赖项并启动客户端开发服务器。 cd clientyarn installyarn start 转到服务器目录并创建....
CITA( Rivtower Inter-enterprise Trust Automation )是一个面向企业级应用的支持智能合约的高性能区块链内核, 旨在为企业级区块链应用提供一个稳固、高效、灵活、可适应未来的运行平台
cita-vm 针对CITA的快速EVM实现。 为高性能而优化,比奇偶校验速度快5倍。 完全基于 。 [dependencies]cita-vm = "0.1.6"例子让我们从最基本的例子开始。 首先,我们在内存中初始化一个数据库: let db = Arc::new...
混音 Remix是基于浏览器的编译器和IDE,可让用户使用Solidity语言构建以太坊合约并调试交易。 要尝试,请访问 。 Remix由许多模块组成,在此存储库中,您将找到Remix IDE(又名Browser-Solidity)。...
库,用于处理智能合约并与 CITA 上的客户端集成。 有关详细文档,请参阅 。 特征 通过 HTTP 完成 CITA JSON-RPC API 的实现。 自动生成 Java 智能合约包装器,以从原生 Java 代码(支持 Solidity 和 Truffle 定义...
Cita:Zotero 的维基数据插件 添加引文元数据支持的插件,与来回通信,从文件附件中提取引文,以及本地引文网络可视化。 这个插件的开发是由一个支持来自维基媒体基金会。 警告:此插件尚未经过彻底测试,可能会...
cita-vm 针对CITA的快速EVM实现。 为高性能而优化,比奇偶校验速度快5倍。 完全基于 。 [dependencies]cita-vm = "0.1.6"例子让我们从最基本的例子开始。 首先,我们在内存中初始化一个数据库: let db = Arc::new...
Cita111项目可能利用其中的一个或多个框架来构建MVC架构的应用,提高开发效率和代码质量。 9. **单元测试**:为了保证代码的质量,开发者通常会使用JUnit进行单元测试,确保每个函数或方法都能正常工作。在Cita111...
CITA服务流程监控CITA微服务和RabbitMQ进程的运行状态,CPU,内存使用情况,IO 区块链数据健康监控块高度历史记录,块间隔,块间隔历史记录,配额,交易历史记录量,TPS,磁盘占用率,数据大小增长趋势 运行环境...
使用Cita约会仪表板,您可以快速创建店面和列出服务。 然后,用户可以预订约会,这些约会将显示在主日历上。 访问以查看应用程序的用户端。 目录 安装 如何使用 安装 确保服务器已安装并正在运行。 安装客户端...
语言:English,русский从任何站点收集和编辑报价Cita是一个免费的扩展程序,它允许保存和编辑任何网页上的报价。对于那些创建演示文稿或使用大量来源的报价撰写文章的人来说,它是必不可少的工具。使用Cita...
此外,项目可能还涉及到AJAX(Asynchronous JavaScript and XML),这是一种使用JavaScript进行异步数据交换的技术,让网页可以在不刷新整个页面的情况下与服务器通信。这在“La-Cita-de-Joe”中可能会体现在加载更...
与Cita可以: - 只保存需要的信息,而不是全文 - 重复保存的报价和/或编辑 - 使用不同颜色的标签对报价进行排序 - 使用搜索和过滤器快速找到所需的报价 - 保持来源的链接 - 离线访问报价 支持语言:English,р...
citaprevia:Cita previaÚnica