写点什么

InfoQ 极客传媒 15 周年庆征文|dubbo+zookeeper 与提供者 provider、消费者 consumer 通信原理讲解

  • 2022 年 6 月 12 日
  • 本文字数:1115 字

    阅读完需:约 4 分钟

InfoQ 极客传媒 15 周年庆征文|dubbo+zookeeper与提供者provider、消费者consumer通信原理讲解

一、系统基本构造

讲解前,先说一下整个系统框架的基本构造:


  • zookeeper作为注册中心,使用单独服务器,占用2181端口;

  • dubbo-admin作为监控中心,与zookeeper使用相同服务器,tomcat部署占用8080端口;

  • provider作为服务提供者,使用单独服务器,tomcat部署占用8080端口,使用dubbo协议开放20880端口;

  • consumer作为服务消费者,使用单独服务器,tomcat部署占用8080端口;


疑惑:


  • provider服务器端口是 8080,为什么telnet测试以及解决方案中开放的端口却是20880

  • 要说dubbo协议开放了20880端口,那8080端口应该也开放啊?

  • zookeeperproviderconsumer之间端口开放和屏蔽情况到底是怎么回事?

二、通信原理

带着这些问题,博主进行了相关验证,最终得出如下结论,先看图,再解释:



  1. dubbo协议在20880端口暴露服务在提供者的dubbo配置文件中,一般都配置了<dubbo:protocol name="dubbo" port="20880"/>,表明用dubbo协议在20880端口暴露服务,当然如果你不配置,dubbo默认使用20880端口暴露服务,所有消费者都是通过20880端口进行服务调用,对于消费者而言,提供者服务器8080端口是透明的,也就是说提供者服务器端口号可以任意改变,服务也不会有任何影响,消费者无需关心。


从监控中心可以看到如图:



除了在指定端口上暴露服务之外,还可以在指定ip上暴露服务,配置如下:


<dubbo:protocol name="dubbo" host="10.1.22.2" port="20880" />
复制代码


  1. 端口开放情况zookeeper作为注册中心,provider提供服务、consumer订阅服务、dubbo-admin管理监控服务,所以zookeeper注册中心的2181端口需要向providerconsumerdubbo-admin开放;


一般情况下,dubbo-admin监控中心与zookeeper注册中心部署在相同的服务器上,zookeeper可以不考虑端口开放给dubbo-admin的情况;


consumer订阅服务,即拿到了provider20880端口暴露的服务,当consumer请求服务时,直接从consumer跳到provider,而不是consumerzookeeper再到provider,所以provider20880无需开放给zookeeper


同理,provider响应服务时,也是直接从providerconsumer,而不是providerzookeeper再到consumer,所以consumer8080无需开放给zookeeper


zookeeper注册中心是完全被动的。

三、总结

  • zookeeper2181端口开放给providerconsumerdubbo-admin ;

  • provider20880开放给所有consumer,但8080服务器端口可以完全屏蔽;

  • consumer8080开放给所有provider;

  • dubbo-admin8080开放给管理员用户,便于通过浏览器监控注册中心服务的情况;

  • 注册中心只负责服务注册目录发布安全授权,实际的服务访问仍然是两个组件之间的点对点连接完成,这种方式下整个架构下获取更高的性能,同时服务管理平台也不容易成为大并发服务访问下的单点瓶颈。

四、拓展阅读

发布于: 刚刚阅读数: 4
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
InfoQ 极客传媒 15 周年庆征文|dubbo+zookeeper与提供者provider、消费者consumer通信原理讲解_zookeeper_No Silver Bullet_InfoQ写作社区