响应式编程组件Actor的选型
Published on 11/03/2019
Updated on 11/03/2019
Actor模型
Actor模型是响应式编程的一种实现,在Actor系统中,每个实体都是一个响应消息的Actor,Actor的内部状态是私有的,以消息驱动代替传统的方法调用完成交互。经过验证,采用Akka Actor模型的scala语言显著降低了通信延迟,且在维持分布式系统中的休眠进程时表现最佳。 RepChain的实现采用了Actor模型,表现出良好的容错性/韧性,同时易于对系统的瓶颈环节进行算力调整。例如,在RepChain的性能优化过程中,发现请求背书环节存在比较严重的阻塞(耗时约120ms),拖累了整个系统的TPS(Transactions Per Second,每秒交易数)。因此决定将背书请求的处理从原来的单Actor实例串行改为多Actor实例并行:将负责背书请求的模块调整为负责调度的Actor和负责背书处理的子Actor;同时保持对外服务的背书请求消息格式不变,子Actor对背书请求消息的处理逻辑不变。改进后背书处理耗时降低了40ms,系统的TPS指标提高了60,改动的代码数不到300行。而同类系统采用Kubernetes等工具在容器级别进行算力调度,难以实现类似的模块/子模块级别的细粒度算力调整。