dubbo服务暴露_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > dubbo服务暴露

dubbo服务暴露

 2017/8/10 18:31:24  Flint0006  程序员俱乐部  我要评论(0)
  • 摘要:主要是通过ServiceConfig.export()在调用dubboProtocolDubboProtocol.export()->DubboProtocol.openserver()->DubboProtocol.createServer重点就在createServer方法内的Exchangers.bind(url,requestHandler);里面业务逻辑复杂,需要一定时间研究,大致理解就是使用netty建立长连接,hessian2序列化
  • 标签:服务
主要是通过
ServiceConfig.export() 在调用dubboProtocol
DubboProtocol.export()->DubboProtocol.openserver()->DubboProtocol.createServer
重点就在createServer方法内的Exchangers.bind(url, requestHandler);
里面业务逻辑复杂,需要一定时间研究,大致理解就是使用netty建立长连接,hessian2序列化、使用java线程模型threadpool及消息分发dispatcher
底层使用netty通过nettyServer建立nio服务,transportCodec先解码也就是反序列化,在编码(序列化)使用hessian2,(之所以使用hessian2性能比java原生的好,码流小、速度快)

NettyTransporter
NettyServer
AbstractPeer
DecodeHandler
这个类也比较重要:HeaderExchangeHandler负责处理接收的请求message,并返回响应

NettyServer父类是AbstractPeer,并且AbstractPeer内将会调用HeaderExchangeHandler.received 及HeaderExchangeHandler.send()方法;所以主要看HeaderExchangeHandler业务逻辑

如果是服务提供者会调用HeaderExchangeHandler.received()方法,处理消费者请求在调用DubboProtocol.ExchangeHandlerAdapter.reply()方法根据invoke和invocation确定具体的接口和方法调用方法,并将返回结果发送给消费者(发送调用的返回结果在HeaderExchangeHandler.received()中实现)
发表评论
用户名: 匿名