Tars服务网络模型总结

1、前言说明

    因为业务系统使用了Tars实现服务的注册、发现等分布式应用。需要了解其原理以及相关实现方法,方便故障的排除、性能优化等。

    本文档基于Tars官方资源仓库https://github.com/TarsCloud/TarsCpp.git学习,重点描述rpc模块客户端以及服务端的网络模型。方便其它开发人员学习。

    如果有错误欢迎指正。

2、服务端网络结构

d6a93e14b26cf53dcece6a0b76f4d49d009.jpg

Connection:一个连接的信息以及相关操作,支持Tcp、Udp。包含两个发送队列:普通队列、高优先级队列。消息包收、发,以及协议解析等操作。完整包解析后添加到业务线程的队列中,如果队列满则丢弃。

ConnectionList:管理所有Connection。

NetThread:收发包,连接管理,多线程(可配置),采用epoll ET触发实现收发包,连接管理,多线程(可配置),采用epoll ET触发实现。

BindAdapter:绑定端口类,用于管理servent对应的绑定端口的信息操作。

HandleGroup:管理BindAdapter,可以实现Adpater分组管理,Handle即业务线程(个数可配置)。同一组消费同一个消息队列。

Servant:进行业务消息的处理,由此派生出业务类实现自己的业务逻辑。

ServantHandle:Handle的子类,管理Servant。

3、客户端网络结构

dbf1ffcc5bf60e628e419936bd391921e6f.jpg

AdapterProxy:具体服务器某个节点的本地代理,管理到服务器的连接,以及请求超处理。

EndpointManager:管理AdapterProxy。

ObjectProxy:远程对象代理,负责路由分发、负载均衡、容错,支持轮询/hash/权重。

ServantProxy:远程对象调用的本地代理,支持同步/异步/单向,Tars协议和非Tars协议。

AsyncThread:异步请求的回调处理线程。

CommunicatorEpoll:客户端网络处理。

Communicator:网络线程管理。

转载于:https://my.oschina.net/beyondwxf/blog/3041165

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值