大众点评Cat--Server模块架构分析

本文分析了大众点评Cat的Server模块,基于Netty的reactor模型,详细讲解了网络模型、Server初始化、消息就绪、消费和提交过程。Cat Server使用延迟队列处理消息,MessageConsumer和TcpSocketReceiver负责reactor和延迟队列功能。每个周期对应多个任务,MessageAnalyzer处理MessageQueue中的消息,并在周期结束或JVM关闭时持久化数据。
摘要由CSDN通过智能技术生成

之前写过一篇dubbo cluster–架构。因为dubbo逻辑集群的功能主要是在client端,主要侧重在client的分析。后来因为工作忙和懒癌,也就没再继续server的叙述了。最近正好在看大众点评的cat源码,其中也有rpc的模块,就借此专门来分析下rpc server的实现。

网络模型

Cat server基于netty,是典型的reactor模型。
reactor模型
上图是网上找的reactor模型示例图。Netty的boss和workder分别映射图中的mainReactor和subReactor。由boss accept nio channel,之后交由worker read, decode以及handle等。Netty的实现和图中略微有点不一致,在netty中decode和handle是同步的。

需要说明的是netty handler也可以异步处理,netty支持线程池分发handler thread。

还有另一种方案,由应用程序自身实现延迟队列做异步处理,handler只需将消息(事件)放入队列即可,cat采用的就是这种方案。Cat是通过decoder解码消息后调用handler将消息插入延迟队列,并没有向netty注册handler再由netty在decode完毕后调用相应handler。

Cat的传输数据对象为MessageTree,MessageCodec对传输消息编码和解码,MessageHanlder将消息放入队列。下图是cat server的静态结构。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值