cita横向扩展的问题思考

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

内容简介:在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团队后续会跟进并解决这些问题。


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

查看所有标签

猜你喜欢:

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

P3P Web隐私

P3P Web隐私

克劳娜著、技桥译 / 克劳娜 / 清华大学出版社 / 2004-5 / 45.0

自万维网络中出现商业站点以来,基于Web的商业需求和用户的隐私权利之间就存在着不断的斗争。Web开发者们需要收集有关用户的信息,但是他们也需要表示出对用户隐私的尊重。因此隐私偏好工程平台,或者称之为P3P,就作为满足双方利益的技术应运而生了。 P3P由万维网协会研制,它为Web用户提供了对自己公开信息的更多的控制。支持P3P的Web站点可以为浏览者声明他们的隐私策略。支持P3P的浏览......一起来看看 《P3P Web隐私》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具