cita横向扩展的问题思考

栏目: 后端 · 发布时间: 7年前

内容简介:在cita白皮书中,服务分片是作为亮点和重点突出的部分,就如同官方的这两张设计架构图每个节点切分了若干个单独服务,各个服务之中通过一个消息总线(在cita代码中所用的是rabbitmq)进行交互,而每个单独的微服务又可以进行横向扩展,比如多个rpc服务,多个Auth服务,多个exector服务等,总之可以动态地增加或者减少单个微服务的服务能力。然而通读代码之后,发现并非如此,cita现在做到的只是第一步:把节点分析成多个单独服务,这些服务可以在一台机器上,也可以在不同的机器上。

在cita白皮书中,服务分片是作为亮点和重点突出的部分,就如同官方的这两张设计架构图

cita横向扩展的问题思考
cita横向扩展的问题思考

每个节点切分了若干个单独服务,各个服务之中通过一个消息总线(在cita代码中所用的是rabbitmq)进行交互,而每个单独的微服务又可以进行横向扩展,比如多个rpc服务,多个Auth服务,多个exector服务等,总之可以动态地增加或者减少单个微服务的服务能力。

然而通读代码之后,发现并非如此,cita现在做到的只是第一步:把节点分析成多个单独服务,这些服务可以在一台机器上,也可以在不同的机器上。

第二步的将单个微服务进行横向扩展,其实是还没有实现的,而且在现在的cita代码的架构上,也不太容易实现,根据rabbitmq的无状态分发特性,如果是多个相同的微服务同时订阅某一类消息,mq会无差别地分发到各个服务中,而不会根据服务状态。比如一个rpc服务启动了三个相同的微服务A,B,C来同时提供rpc服务,A收到了一个请求后,通过mq转发到其它的服务(比如 Auth服务),在Auth处理请求后,将结果放到mq中,这时候因为有A,B,C三个rpc服务同时订阅了这一类消息,所以A不保证会收到处理结果并返回给用户,导致服务的出错。其它的微服务也一样

还有就是Executor服务,在执行evm的时候会对世界状态树进行修改,有多个executor,就代码着有多个evm在执行,而修改世界状态树必需是线性的,并发会造成很多问题,所以理论上evm也不能并行执行合约。executor只能有一个

现在的cita代码,这些问题都是不容易解决的。但不排除cita团队后续会跟进并解决这些问题。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

从零开始学创业大全集

从零开始学创业大全集

阳飞扬 / 中国华侨出版社 / 2011-10-1 / 29.80元

为了让每一个怀揣梦想走上创业之路的有志者能在最短的时间内叩开创业的大门,了解创业的流程和方法,从而找到适合自己的创业之路,我们精心编写了这本《从零开始学创业大全集》。阳飞扬编著的《从零开始学创业大全集(超值白金版)》从创业准备、创业团队的组建、创业项目和商业模式的选择、创业计划书的制作、创业资金的筹集、企业的经营策略、资本运作以及产品营销方法、危机应对策略等方面,全面系统地阐述了创业的基本理论与实......一起来看看 《从零开始学创业大全集》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具