cita横向扩展的问题思考

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

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


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

查看所有标签

猜你喜欢:

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

大数据系统构建

大数据系统构建

Nathan Marz、James Warren / 马延辉、向磊、魏东琦 / 机械工业出版社 / 2017-1 / 79.00

随着社交网络、网络分析和智能型电子商务的兴起,传统的数据库系统显然已无法满足海量数据的管理需求。 作为一种新的处理模式,大数据系统应运而生,它使用多台机器并行工作,能够对海量数据进行存储、处理、分析,进而帮助用户从中提取对优化流程、实现高增长率的有用信息,做更为精准有效的决策。 但不可忽略的是,它也引入了大多数开发者并不熟悉的、困扰传统架构的复杂性问题。 本书将教你充分利用集群硬件优势的La......一起来看看 《大数据系统构建》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具