tars-网络层-客户端实现
2021-05-23 14:20:21   0  举报             
     
         
 鹅厂开源微服务框架
    作者其他创作
 大纲/内容
 Transceiver网络传输基类,主要提供send/recv接口
  +
  getObjectProxy
  派生
  3)run循环handle发包invoke
  ServantProxyFactory
  ServantPrx远程对象的本地代理(同名servant在一个通信器中只有一个实例)(协议文件的类会继承该类)
  AdapterProxy每个Adapter对应一个Endpoint,也就是一个服务端口
  ServantProxyThreadData线程私有数据
  +getData获取线程数据,没有的话会自动创建+ReqInfoQueue * _reqQueue[MAX_CLIENT_THREAD_NUM]; 每个线程跟客户端网络线程通信的队列
  +ServantProxyFactoryPtr +网络线程数组_communicatorEpoll[MAX_CLIENT_THREAD_NUM];+stringToProxy会根据传参obj的名字调用getServantProxy获得对应的servant代理类Communicator::initialize() 构造_communicatorEpoll网络线程处理类调用getServantProxy
  TcpTransceiver TCP 传输实现
  6)收包TcpTransceiver::doResponse
  UdpTransceiver UDP 传输实现
  1)调用接口生成的tars_invoke
  EndpointManager框架内部的路由管理的实现类
  +_locator+_objName+sEndpoints+ QueryFPrx     _queryFPrx; 主控的路由代理节点列表set<EndpointInfo>         _activeEndpoints;set<EndpointInfo>         _inactiveEndpoints;
    initiali构造_servantProxyFactory代理工厂对象getServantProxy
  4)invoke
  7)包收完了,处理RPC回调AdapterProxy::finishInvoke
  8)push_back
  5)发包出去trans-sendRequest
  一次RPC调用过程可能出现的异常情况
  +发送队列满了[TARS][ServantProxy::invoke msgQueue push_back error num:\" << pSptd->_netSeqthrow TarsClientQueueException(\"client queue full\")+ 超时:os << \"[ServantProxy::invoke timeout:\
  构造ObjProxy、构造ServantProxy
  ObjectProxy每个objectname在每个客户端网络线程中有唯一一个objectproxy
  AsyncProcThread异步回调后的处理线程
  +push_back+run:msg->callback->onDispatch(msgPtr)这里回调异步处理函数Ondispatch(函数由框架自动生成),至此完成一次RPC异步调用和回调的过程
  CommunicatorEpoll客户端网络处理的线程类
  +span style=\"font-size: inherit;\
  2)处理收发包
   
 
 
 
 
  0 条评论
 下一页
  
   
   
   
  
  
  
  
  
  
  
 