Dubbo 3 端口协议复用(dubbo 端口被占用问题)

  本篇文章为你整理了Dubbo 3 端口协议复用(dubbo 端口被占用问题)的详细内容,包含有dubbo端口配置 dubbo 端口被占用问题 dubbo20880端口 dubbo 22222端口占用 Dubbo 3 端口协议复用,希望能帮助你了解 Dubbo 3 端口协议复用。

  通过对protocol进行配置,dubbo3可以支持端口的协议复用。
 

  比如使用Triple协议启动端口复用后,可以在相同的端口上为服务增加
 

  Dubbo协议支持,以及Qos协议支持。这些协议的识别都是由一个统一的端口复用
 

  服务器进行处理的,可以用于服务的协议迁移,并且可以节约端口以及相关的资源,减少运维的复杂性。

  
在服务的创建阶段,通过从Config层获取到服务导出的协议配置从而创建不同的Protocol对象进行导出。在导出的过程
 

  中,如果不是第一次创建端口复用的Server,那么Exchanger会将Protcol层传递的数据保存到Server,用于后续处理该协议类型的消息。

  
当客户端的消息传递过来后,首先会通过Server传递给ProtocolDetector,如果完成了识别,那么就会标记该客户端为对应的协议。并通过WireProtocol配置对应的处理逻辑,最后交给ChannelOperator完成底层的IO框架和对应的Dubbo框架的处理逻辑的绑定。

  
以上的协议识别完成之后,Channel已经确定了如何处理远程的客户端消息,通过对应的ServerPipeline进行处理即可(在处理的过程中也会根据配置信息决定消息的处理线程)。

  
https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-port-unification

  关于Dubbo支持的配置方式,可以参考配置说明

  服务多协议导出

  ext-protocol参数支持配置多个不同的协议,协议之间通过","进行分隔。

  xml 配置

  

 dubbo:protocol name="dubbo" port="-1" ext-protocol="tri,"/ 

 

   bean id="greetingService" /

   dubbo:service delay="5000" version="1.0.0" group="greeting" timeout="5000" interface="org.apache.dubbo.demo.GreetingService" ref="greetingService" protocol="dubbo"/

  

 

  API 配置

  

ProtocolConfig config = new ProtocolConfig(CommonConstants.TRIPLE, -1);

 

  config.setExtProtocol(CommonConstants.DUBBO+",");

  

 

  yaml 配置

  

dubbo:

 

   application:

   name: dubbo-springboot-demo-provider

   protocol:

   name: tri

   port: -1

   ext-protocol: dubbo,

  

 

  properties 配置

  

dubbo.protocol.name=tri

 

  dubbo.protocol.ext-protocol=dubbo,

  dubbo.protocol.port=20880

  

 

  Qos接入

  Qos模块导入

  

 dependency 

 

   groupId org.apache.dubbo /groupId

   artifactId dubbo-qos /artifactId

   /dependency

  

 

  完成Qos模块的导入之后,相关的配置项可参考Qos操作手册进行配置。

  默认情况下,基于端口复用的Qos服务在模块导入后是启动的。

  Qos使用

  将Qos协议接入到端口复用的场景下,需要在建立连接之后,客户端先向服务端发送消息,对比将Qos协议通过单个端口提供服务,端口复用版的Qos协议在处理telnet连接的情况下需要用户执行一些操作,完成协议识别(二选一)。

  
直接调用命令

  直接调用telnet支持的命令也可以完成识别,在用户不熟悉的情况下可以调用help指令完成识别

  
使用 crtl + "]" 进入到telnet交互界面(telnet默认的escape character)

  调用 "send ayt" 向服务端发送特殊识别字段(为telnet协议的一个特殊字段)

  回车完成消息发送并进入到dubbo的交互界面

  
以dubbo-samples-port-unification中的例子作为基础, 引用不同协议的服务和非端口复用情况下的配置是一致的,下面通过Consumer端的InvokerListener输出调用过程中的URL信息。

  

ReferenceConfig GreetingService reference = new ReferenceConfig ();

 

  reference.setInterface(GreetingService.class);

  reference.setListener("consumer");

  reference.setProtocol(this.protocol);

  // reference.setProtocol(CommonConstants.DUBBO);

  // reference.setProtocol(CommonConstants.TRIPLE);

  

 

  欢迎在 https://github.com/apache/dubbo 给 Dubbo Star。
 

  搜索关注官方微信公众号:Apache Dubbo,了解更多业界最新动态,掌握大厂面试必备 Dubbo 技能

  以上就是Dubbo 3 端口协议复用(dubbo 端口被占用问题)的详细内容,想要了解更多 Dubbo 3 端口协议复用的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: