前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dubbo(总结一)服务发布总结

dubbo(总结一)服务发布总结

作者头像
虞大大
发布2020-10-28 17:14:33
9560
发布2020-10-28 17:14:33
举报
文章被收录于专栏:码云大作战

一、服务端provider发布

根据dubbo启动日志,provider的发布动作为以下几个步骤:

(1)暴露本地服务

Export dubbo service com.ywl.dubbo.TestApi to local registry, dubbo version: 2.0.0, current host: 127.0.0.1。

(2)暴露远程服务

Export dubbo service com.ywl.dubbo.TestApi to url dubbo://192.168.24.69:20880/com.ywl.dubbo.TestApi...后面省略。

(3)启动netty

Start NettyClient yuwenlei.local/192.168.24.69 connect to the server /192.168.1.100:20041, dubbo version: 2.0.0, current host: 192.168.24.69。

(4)打开zk

Opening socket connection to server dailyzk.webuy.ai/192.168.49.11:2181。

(5)注册provider服务到zk

Register dubbo service com.ywl.dubbo.TestApi url dubbo://192.168.24.69:20880/com.ywl.dubbo.TestApi? ...中间省略。

to registry registry://dailyzk.webuy.ai:7005/org.apache.dubbo.registry.RegistryService? ...后面省略。

(6)监听zk(订阅与通知)

Subscribe: provider://192.168.24.69:20880/com.ywl.dubbo.TestApi?...后面省略。

Notify urls for subscribe url provider://192.168.24.69:20880/com.ywl.dubbo.TestApi?...后面省略。

· 服务发布的目的

解析dubbo-provider.xml中的接口。将服务提供者向注册中心注册服务,以便服务消费者从注册中心查询并调用服务。

代码语言:javascript
复制
<dubbo:service interface="com.ywl.dubbo.TestApi" ref="testApi" retries="0"
               cluster="failfast" timeout="3000"/>

二、服务发布总结 - invoker

· dubbo-provider.xml中的接口是如何被解析的?

通过spring的schema标签,通过service元素绑定对应的解析器,即new DubboBeanDefinitionParser(ServiceBean.class, true)。

通过dubboBeanDefinitionParser来解析dubbo-provider文件,并加载到spring容器中。

通过ServiceBean的onApplicationEvent事件来暴露服务。

· 服务转化invoker

服务发布的第一步,将dubbo的api转换成invoker。

以上流程如下图所示:

三、服务暴露总结 - exporter

· 本地服务暴露

暴露本地服务表示在同一个JVM中,不用通过远程通信来调用。即,在同一个服务中,可以自己调用自己的接口。

本地服务暴露流程如下图:

· 远程服务暴露

暴露远程服务表示暴露给远程客户端IP和端口号,需要通过远程通信来调用。

远程服务暴露流程如下图:

综上所述,可以看到本地服务暴露和远程服务暴露本质上的区别,并且服务暴露的最终目的就是将exporter对象放入到exporterMap中。

四、dubbo服务在zookeeper上的注册和订阅 - 总结

· dubbo服务在zookeeper的注册

主要分为两步,第一步为初始化zookeeper,第二步将服务注册到zookeeper中,注册节点中的/provider为持久化节点,注册节点中的服务ip为临时节点。

dubbo服务注册流程图:

注册后zookeeper的节点关系图:

· 临时节点和持久化节点

临时节点,他与客户端会话绑定,一但服务端服务被关闭或会话失效,那么这个客户端所创建的临时节点都会被删除。

持久化节点,表示服务节点一但被创建,除非触发主动删除,否则一直存储在ZK中。

dubbo服务注册时采用临时节点是因为,临时节点的本质是与服务端或客户端会话所绑定的,而在dubbo应用中一但服务被关闭那么zk上的节点也没有必要存在,该dubbo服务所建立的临时节点也会被删除。

对于dubbo中的providers/configuration/routes/consumers节点会被作为持久化节点来创建。

· dubbo服务的订阅

主要分为三个步骤:

(1)创建持久化配置节点,即/configurations、/routes等节点。

(2)加入订阅监听。

(3)收到订阅后的处理。

订阅流程图如下所示:

服务发布完成后zookeeper上的节点信息:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码云大作战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档