CITA架构与云计算服务

按:原文发表于2017年8月。

微服务架构

那一年架构大师Martin Fowler写了一篇名字叫做Microservices的著名文章,微服务的思想却是在那之前就流行在架构师的圈子里面。这思想与结构化编程的理念一脉相承,即软件系统的功能应该切分为尽可能的简单的模块,然后通过某种标准的方式组装起来。在进程内我们可以将代码解耦成一个个类和对象,通过对象间消息把它们组合起来;在UNIX系统里面我们实现了一个个极小而专一的工具,利用管道组合这些小工具从而完成各种复杂的任务;于是在企业级架构中,将系统拆分成一个个独立的应用,相互之间通过HTTP协议或是企业消息总线进行连接,也就是自然而然的事情了。

每一个微服务都是一名匠人,它只专注于一件事情,而且能够很好的完成它。将一个软件系统重构为微服务架构的过程,就是不断的将单个独立的任务发掘出来并且将其代理给一位位值得托付的工匠的过程。(还真是像我们发展创业团队的过程哟 0_0)

如果我们仔细观察交易从被用户构造出来发送到网络开始的整个处理流程,我们会发现主要有这样几个阶段:

  1. 交易在网络上被广播,扩散。
  2. 网络给交易安排一个唯一而且递增的“序号”,例如交易所在的区块高度+区块内index就是一个“序号”。
  3. 每个节点都看到了交易的序号,并且按照顺序对交易进行处理,例如将交易作为参数传给智能合约就是一种处理方式。
  4. 用户通过节点提供的接口,获得交易被处理后的结果

这几个主要阶段正好对应了cita里面的四个主要微服务

  1. 网络服务
  2. 共识服务
  3. 执行服务
  4. RPC服务

cita网络中的每一个全节点都会运行这一组服务。由于这些服务可以运行在多台服务器上,因此cita里面的节点概念不再和服务器一一绑定,而是变成了由一台或者多台物理服务器构成的集群。集群运行在企业内部,因此同一节点的微服务之间可以相互信任,共享相同的安全边界。

image

微服务通过消息中间件连接(虽然cita v0.8只支持RabbitMQ,但对消息中间件透明从一开始就是cita的设计目标,对kafka的支持正在开发中,很快就会与大家见面_)。网络酱负责与P2P网络中的其它节点建立连接,交换消息。无论交易被发送到哪个节点,都会被扩散并被本节点的网络酱接收到,网络酱接收到这个交易之后,会通过消息的形式把它递交给共识酱。共识酱又会请网络酱帮忙和其他节点的共识酱交换消息,以对这个交易的序号达成共识。在共识完成之后,执行酱会接手,调用某个智能合约对交易进行处理。最后用户通过询问RPC酱,获取交易的处理结果。

通过这样一种相互配合、团队协作的流水线作业,cita节点将一个个交易搬到了区块链上。在这样一种作业方式中,节点不再是一位需要自己完成所有工作的小作坊老板,而是一座拥有大量熟练工人的工厂。每一位微服务酱都专心一件事情,因此可以把这件事做得很好很高效。不仅如此,流水线的每个环节都可以有很多选项:我们可以请CITA-BFT酱来负责共识,也可以请PBFT酱或者PoA酱来做这件事,只要结果一样,流水线其他环节的工人完全不会意识到他们是在和共识部门的哪位工人在协作。在cita“工厂”里面,组件可插拔不是口号,而是现实。

image

同样的,小作坊受生产流程所限,产出上限固定,无法应对销售旺季交易量保障的情况;而cita工厂由于建立了一套标准的协作体系,只需要增加更多的流水线和工人就能够从容应对这些情况!

Scalability

cita的这个特点就是传说中的scalability

“等等,scalability不是区块链的一个尚未解决的问题吗?你们不是吹牛吧?”

目前区块链网络的scale问题源自其多复本的设计思路,由于每一个交易都会被复制到所有节点上处理和验证,节点在验证交易的同时也是在进行重复计算,造成了整个网络的交易处理能力约等于网络中单个节点的处理能力,无论怎么增加节点都没有用。我们常常讨论的,就是如何能做出一个方案,在保证安全的前提下能够通过增加节点来提高区块链的处理能力,行话又称为水平扩展(scale out)

我们知道,scalability可以分为两种,除了上述水平扩展外,还有垂直扩展(scale up):如果增加节点没用,能不能想办法提高单个节点的能力呢?既然整个网络的处理能力约等于网络中的单个节点,如果单个节点的能力很强,那么整个网络的处理能力不是就提高了吗?

image

这就是cita具有scalability的原因。通过节点的微服务架构,cita可以做到节点内的水平扩展,从区块链这个层面看,便是节点在垂直扩展了。相较于国际大公司通过专有硬件来提升单节点处理能力的方案,cita只需要运行在普通PC服务器上,不仅能够为用户节约成本,水平扩展能力也比单机架构更强。

这么好的思路,为什么公有链不用呢?

敏锐的读者可能已经发现了问题所在:中心化

对于公有链的设计者来说,节点应该被尽可能多的用户运行在尽可能多的计算机上。运行一个计算机集群虽然能提升节点能力,但是维护集群所需要的专业知识以及资源投入,却是普通用户不具备的。如果在公有链中使用这样的设计,必然出现的情况是只有少数具有专业知识、能够投入一定资源的人才有能力运行全节点,这与公有链的节点对等无中心的目标是相悖的。

cita则是针对企业级用户设计的区块链。作为cita的目标用户,企业天生就具有运行一个集群的资源和能力。在云计算以及容器化技术已经非常成熟的今天,企业级用户可以轻松的将cita服务部署到多台服务器上,并对这些服务进行管理。相较于其他区块链技术,cita微服务架构能够真正发挥云服务的潜力,可以说,cita不仅仅是针对企业级用户设计,也是针对云服务设计的区块链。秘猿技术团队正在开发cita部署工具与组件,如果您有兴趣成为我们的合作伙伴或者用户,欢迎与我们联系,共同推动BaaS(Blockchain as a Service)的发展。

下回分解

不同的设计目标,需要不同的设计思路。作为秘猿科技完全自主研发的区块链框架,cita凝结了秘猿技术团队对区块链的认识与理解,对区块链设计作出了大胆的创新与突破。微服务架构只是cita设计的一个方面,本文也对cita微服务进行了简化,实际上在节点部署中会涉及更多的微服务,例如成员管理等,微服务之间的交互流程也会更复杂。更多的介绍可以阅读cita的白皮书,或者关注我们公众号阅读下一篇文章咯~ : >

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容