dubbo服务暴露

主要是通过
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业务逻辑


HeartbeatHandler使用心跳机制,如果心跳结果通过在执行AllChannelHandler的线程池接收任务,线程池执行excute方法最后调用的是HeaderExchangeHandler.received()方法,如下
如果是服务提供者会调用HeaderExchangeHandler.received()方法,处理消费者请求在调用DubboProtocol.ExchangeHandlerAdapter.reply()方法根据invoke和invocation确定具体的接口和方法调用方法,并将返回结果发送给消费者(发送调用的返回结果在HeaderExchangeHandler.received()中实现)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值