腾讯微服务框架-MSEC(spp-rpc)
第一张:UML图
核心class介绍:
- CFrame:框架公共类,主要包括框架日志对象、框架监控日志对象、框架统计对象;
- CServerBase:服务器程序基础类,包含运行环境初始化、日志、统计、监控对象
三个进程,都继承以上两个基类:
- controller进程:CDefaultCtrl类,主要负责controller,通过消息队列来监控proxy和worker的健康度
- proxy进程:CDefaultProxy类,负责接受用户请求,讲请求数据写入到共享内存
- worker进程: CDefaultWorker类,业务处理逻辑,从共享内存中读取请求数据,进行业务处理完成后,写回到共享内存。
其他核心class
- CTCommu(通讯类抽象接口)
- CTSockCommu(网络通信类):网络监听,接收网络请求,epoll操作
- CShmCommu(共享内存操作类):共享内存相关操作类,和
CTSockCommu
都继承于CTCommu
,也实现了poll
方法,这里的poll只是从共享内存中获取数据,和unix底层的poll
不同,比较容易误导.
- CMQCommu(消息队列通讯类):controller进程通过消息队列**监控**proxy进程和worker进程.
第二张: proxy接收客户端请求的流程是怎样的?
(1)接收请求逻辑
(2)回包逻辑
- 轮询shm。同样是在
CDefaultProxy
中的realrun
方法中,it->second->poll(true)
监听回包共享内存; - 监听到有回包。
CShmCommu
的poll
方法,如果有mem_queue_pop_nm
出来 - sendto回客户端。ctor_recvdata中
CTSockCommu
中的CTSockCommu
第三张: worker是如何处理业务请求的?