Dubbo 源码解析-依赖关系(一)

  • A+
所属分类:Dubbo源码解析

在开始解析源码的之前我们先来了解下dubbo的关系依赖,下面先张贴一张完整的关系图,然后我们在从Dubbo项目入手,通过dubbo源码的项目来一步一步的看他们的各层的依赖。
Dubbo 源码解析-依赖关系(一)

节点角色说明:

Provider:暴露服务的服务提供方

Consumer:调用服务的服务提供方

Registry:服务注册与发现的注册中心

Monitor:统计服务的调用次调和调用时间的监控中心

Container:服务运行容器

Dubbo源码项目日志入手讲解:

1)关系图1.register:

启动com.alibaba.dubbo.demo.provider. DemoProvider 该文件Main,可以看到启动时的日志,通过日志信息:

  1. 可以看到启动的时候会把接口注册到zk注册中心
  2. dubbo://192.168.0.104:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&dubbo=2.0.0&generic=false&interface=com.alibaba.dubbo.demo.DemoService&loadbalance=roundrobin&methods=sayHello&owner=william&pid=2258&side=provider&timestamp=1514813343048, dubbo version: 2.0.0, current host: 127.0.0.1
  1. 并订阅动态配置
  2. provider://192.168.0.104:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&category=configurators&check=false&dubbo=2.0.0&generic=false&interface=com.alibaba.dubbo.demo.DemoService&loadbalance=roundrobin&methods=sayHello&owner=william&pid=2258&side=provider&timestamp=1514813343048, dubbo version: 2.0.0, current host: 127.0.0.1

2)关系图2.subscribe:

启动com.alibaba.dubbo.demo.consumer. DemoConsumer 该文件Main,可以看到项目启动时的日志:通过日志信息:

  1. 可以看到启动的时候,订阅providers、configurators、routers
  2. consumer://192.168.0.104/com.alibaba.dubbo.demo.DemoService?application=demo-consumer&category=providers,configurators,routers&check=false&dubbo=2.0.0&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=2267&side=consumer&timestamp=1514815352817, dubbo version: 2.0.0, current host: 192.168.0.104

3)关系图3.Notify:

2个项目启动的时候都会有一个Notify,订阅内容变更的时候会通知订阅的信息Consumer = providers,configurators,routers , Provider = configurators

4)关系图4.invoke:

根据Consumer启动的日志,可以看到在Consumer启动的时候会先建立一个长链接到20880的端口(链接的日志在注册到服务中心之前),我们可以在Provider的配置文件dubbo.properties看到Provider的端口就是20880也就是Consumer在启动的时候会先链接到Provider用来进行数据的通信。

  1. Successed connect to server /192.168.0.104:20880 from NettyClient 192.168.0.104 using dubbo version 2.0.0, channel is NettyChannel [channel=[id: 0x3a2ef044, /192.168.0.104:53297 => /192.168.0.104:20880]], dubbo version: 2.0.0, current host: 192.168.0.104

5)关系图5.count

项目Consumer启动后,我们在回来看Provider的日志信息发现和Consumer一样都有后台日志,这是一个定时器,定时的向Monitor发送统计数据。

  1. DubboMonitorSendTimer-thread-2  INFO dubbo.DubboMonitor:  [DUBBO] Send statistics to monitor zookeeper://127.0.0.1:2181/com.alibaba.dubbo.monitor.MonitorService?anyhost=true&application=dubbo-monitor&check=false&delay=-1&dubbo=2.0.0&generic=false&interface=com.alibaba.dubbo.monitor.MonitorService&methods=lookup,collect&pid=2258&revision=2.5.8&side=provider&timestamp=1514813343252, dubbo version: 2.0.0, current host: 192.168.0.104

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: