1、前言说明
因为业务系统使用了Tars实现服务的注册、发现等分布式应用。需要了解其原理以及相关实现方法,方便故障的排除、性能优化等。
本文档基于Tars官方资源仓库https://github.com/TarsCloud/TarsCpp.git学习,重点描述rpc模块客户端以及服务端的网络模型。方便其它开发人员学习。
如果有错误欢迎指正。
2、服务端网络结构
Connection:一个连接的信息以及相关操作,支持Tcp、Udp。包含两个发送队列:普通队列、高优先级队列。消息包收、发,以及协议解析等操作。完整包解析后添加到业务线程的队列中,如果队列满则丢弃。
ConnectionList:管理所有Connection。
NetThread:收发包,连接管理,多线程(可配置),采用epoll ET触发实现收发包,连接管理,多线程(可配置),采用epoll E