当前位置: 首页 > 后端技术 > Java

dubbo3端口协议复用

时间:2023-04-02 01:57:23 Java

特性描述通过配置协议,dubbo3可以支持端口协议复用。比如使用Triple协议开启端口复用后,可以在同一个端口上为服务添加Dubbo协议支持和Qos协议支持。这些协议的识别由统一的端口复用服务器处理,可用于业务协议迁移,节省端口及相关资源,降低运维复杂度。在服务创建阶段,通过从Config层获取服务导出的协议配置,创建不同的Protocol对象用于导出。在导出过程中,如果不是第一次创建端口复用的服务器,Exchanger会将协议层传递过来的数据保存到服务器,以供后续处理该协议类型的报文。当客户端的消息投递时,首先会通过服务端传递给ProtocolDetector。如果识别完成,客户端将被标记为相应的协议。并通过WireProtocol配置相应的处理逻辑,最终交给ChannelOperator完成底层IO框架与相应Dubbo框架处理逻辑的绑定。上述协议识别完成后,Channel就确定了如何处理远程客户端消息,可以通过相应的ServerPipeline进行处理(消息的处理线程在处理时也会根据配置信息来确定)。如何使用在同一台主机上部署多个服务或需要通过负载均衡器访问多个服务。参考用例https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-port-unification配置方法Dubbo支持的配置方法可以参考配置说明服务多协议导出ext-protocol参数支持配置有多个不同的协议,用“,”分隔。xml配置API配置ProtocolConfigconfig=newProtocolConfig(CommonConstants.TRIPLE,-1);config.setExtProtocol(CommonConstants.DUBBO+",");yaml配置dubbo:application:name:dubbo-springboot-demo-providerprotocol:name:triport:-1ext-protocol:dubbo,properties配置dubbo.protocol.name=tridubbo.protocol.ext-protocol=dubbo,dubbo.protocol.port=20880Qos接入Qos模块导入org.apache。dubbodubbo-qos导入Qos模块后,相关配置项可参考Qos操作手册进行配置。模块导入后默认启动基于端口复用的Qos服务。如何使用Qos当Qos协议连接到端口复用场景时,客户端需要在连接建立后向服务器端发送消息。与通过单一端口提供服务的Qos协议相比,端口复用版本的Qos协议在处理telnet连接的情况下,需要用户进行一些操作来完成协议识别(二选一)。直接调用命令也可以直接调用telnet支持的命令完成识别。如果用户不熟悉,可以调用帮助命令完成识别。发送telnet命令进行识别。通过telnet命令建立连接后,执行以下步骤:使用crtl+"]"进入telnet交互界面(telnet默认转义字符)调用"sendayt"发送特殊标识字段(telnet协议)到服务器,回车完成消息发送,进入dubbo交互界面服务引用为dubbo-以samples-port-unification中的例子为基础,配置引用不同协议和非服务的服务端口复用是一致的。接下来通过Consumer端的InvokerListener输出调用过程中的URL信息。ReferenceConfigreference=newReferenceConfig<>();reference.setInterface(GreetingService.class);reference.setListener("consumer");reference.setProtocol(this.protocol);//reference.setProtocol(CommonConstants.DUBBO);//reference.setProtocol(CommonConstants.TRIPLE);欢迎来到DubboStarhttps://github.com/apache/dubbo。搜索并关注官方微信公众号:ApacheDubbo,了解更多行业最新动态,掌握各大厂面试必备的Dubbo技能

猜你喜欢