dubbo架構(gòu)原理(1)

1、準(zhǔn)備

在分析探索Dubbo架構(gòu)原理之前,我們需要準(zhǔn)備一下環(huán)境,用于后面我們來分析dubbo的架構(gòu)。

1.1 Zookeeper

Dubbo使用Zookeeper為注冊中心。所以需要在本地啟動zookeeper,作為Dubbo的注冊中心。

啟動Zookeeper服務(wù):用于dubbo的注冊中心。

啟動Zookeeper Inspector:它是Zookeeper服務(wù)信息查看工具。

可以查看zookeeper上面的節(jié)點(diǎn)信息。


1.2 Dubbo源代碼

dubbo源代碼的下載地址為:alibaba/dubbo.通過dubbo里面的dubbo-demo項目我們來分析dubbo的項目架構(gòu)原理。

1.3 Maven

因?yàn)閐ubbo代碼是通過maven進(jìn)行項目管理的,所以需要具有maven的知識。

2、Dubbo角色

從服務(wù)模型的角度來看,Dubbo采用的是一種非常簡單的模型,要么是提供方提供服務(wù),要么是消費(fèi)方消費(fèi)服務(wù),所以基于這一點(diǎn)dubbo里面抽象出了服務(wù)提供方(Provider)和服務(wù)消費(fèi)方(Consumer)兩個角色。而連接Provider和Consumer的就是注冊中心(Registry),Provider把服務(wù)暴露在Registry上,而Consumer通過Registry來調(diào)用暴露在Registry上面的服務(wù)。

節(jié)點(diǎn)角色說明:

Provider: 暴露服務(wù)的服務(wù)提供方

Consumer: 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方。

Registry: 服務(wù)注冊與發(fā)現(xiàn)的注冊中心。

Monitor: 統(tǒng)計服務(wù)的調(diào)用次調(diào)和調(diào)用時間的監(jiān)控中心。

Container: 服務(wù)運(yùn)行容器。


3、Dubbo Provider

下面我們就來啟動dubbo-demo項目中子項目目dubbo-demo-provider來監(jiān)控Dubbo在啟動Provider的時候都做了哪些事。首先我們需要把配置文件修改一下。把注冊中心替換成Zookeeper.

dubbo\dubbo-demo\dubbo-demo-provider\src\test\resources\dubbo.properties

dubbo.container=log4j,spring

dubbo.application.name=demo-provider

dubbo.application.owner=william

#dubbo.registry.address=multicast://224.5.6.7:1234

dubbo.registry.address=zookeeper://127.0.0.1:2181

#dubbo.registry.address=redis://127.0.0.1:6379

#dubbo.registry.address=dubbo://127.0.0.1:9090

dubbo.monitor.protocol=registry

dubbo.protocol.name=dubbo

dubbo.protocol.port=20880dubbo.service.loadbalance=roundrobin

#dubbo.log4j.file=logs/dubbo-demo-consumer.log

#dubbo.log4j.level=WARN

然后使用demo里面的項目來啟動Provider。啟動類為:com.alibaba.dubbo.demo.provider.DemoProvider,它是以main方法啟動。

public class DemoProvider {

? ? public static void main(String[] args) {

? ? ? ? com.alibaba.dubbo.container.Main.main(args);

? ? }

}


我們首先來觀察一下dubbo Provider的啟動目錄。

Connected to the target VM, address: '127.0.0.1:55696', transport: 'socket'

[09/09/17 07:53:33:033 CST] main INFO logger.LoggerFactory: using logger: com.alibaba.dubbo.common.logger.log4j.Log4jLoggerAdapter[09/09/17 07:53:33:033 CST] main INFO container.Main: [DUBBO] Use container type([log4j, spring]) to run dubbo serivce., dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:53:33:033 CST] main INFO container.Main: [DUBBO] Dubbo Log4jContainer started!, dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:53:33:033 CST] main INFO support.ClassPathXmlApplicationContext: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6483f5ae: startup date [Sat Sep 09 19:53:33 CST 2017]; root of context hierarchy[09/09/17 07:53:34:034 CST] main INFO xml.XmlBeanDefinitionReader: Loading XML bean definitions from file [E:\Project\github\dubbo\dubbo-demo\dubbo-demo-provider\target\classes\META-INF\spring\dubbo-demo-provider.xml][09/09/17 07:53:34:034 CST] main INFO support.DefaultListableBeanFactory: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@683dbc2c: defining beans [demoService,com.alibaba.dubbo.demo.DemoService]; root of factory hierarchy[09/09/17 07:53:36:036 CST] main INFO config.AbstractConfig: [DUBBO] The service ready on spring started. service: com.alibaba.dubbo.demo.DemoService, dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:53:37:037 CST] main INFO config.AbstractConfig: [DUBBO] Export dubbo service com.alibaba.dubbo.demo.DemoService to local registry, dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:53:37:037 CST] main INFO config.AbstractConfig: [DUBBO] Export dubbo service com.alibaba.dubbo.demo.DemoService to url dubbo://169.254.69.197: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=7372&side=provider×tamp=1504958016968, dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:53:37:037 CST] main INFO config.AbstractConfig: [DUBBO] Register dubbo service com.alibaba.dubbo.demo.DemoService url dubbo://169.254.69.197: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&monitor=dubbo%3A%2F%2F127.0.0.1%3A2181%2Fcom.alibaba.dubbo.registry.RegistryService%3Fapplication%3Ddemo-provider%26dubbo%3D2.0.0%26owner%3Dwilliam%26pid%3D7372%26protocol%3Dregistry%26refer%3Ddubbo%253D2.0.0%2526interface%253Dcom.alibaba.dubbo.monitor.MonitorService%2526pid%253D7372%2526timestamp%253D1504958017518%26registry%3Dzookeeper%26timestamp%3D1504958016859&owner=william&pid=7372&side=provider×tamp=1504958016968 to registry registry://127.0.0.1:2181/com.alibaba.dubbo.registry.RegistryService?application=demo-provider&dubbo=2.0.0&owner=william&pid=7372?istry=zookeeper×tamp=1504958016859, dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:53:39:039 CST] main INFO transport.AbstractServer: [DUBBO] Start NettyServer bind /0.0.0.0:20880, export /169.254.69.197:20880, dubbo version: 2.0.0, current host: 127.0.0.1

--------------------------------------start connection zookeeper------------------------------------------

[09/09/17 07:53:39:039 CST] ZkClient-EventThread-17-127.0.0.1:2181 INFO zkclient.ZkEventThread: Starting ZkClient event thread.[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:zookeeper.version=3.3.3-1073969, built on 02/23/2011 22:27 GMT[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:host.name=carl[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:java.version=1.8.0_141[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:java.vendor=Oracle Corporation[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:java.home=D:\tool\Java\jdk1.8.0_141\jre[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:java.io.tmpdir=C:\Users\Carl\AppData\Local\Temp\[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:java.compiler=[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:os.name=Windows 10[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:os.arch=amd64[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:os.version=10.0[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:user.name=Carl[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:user.home=C:\Users\Carl[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Client environment:user.dir=E:\Project\github\dubbo[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZooKeeper: Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.I0Itec.zkclient.ZkClient@42f8285e[09/09/17 07:53:48:048 CST] main-SendThread() INFO zookeeper.ClientCnxn: Opening socket connection to server /127.0.0.1:2181[09/09/17 07:53:48:048 CST] main-SendThread(127.0.0.1:2181) INFO zookeeper.ClientCnxn: Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session[09/09/17 07:53:48:048 CST] main-SendThread(127.0.0.1:2181) INFO zookeeper.ClientCnxn: Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x15e664ff295000c, negotiated timeout = 30000

-------------------------------------------dubbo connectioned-------------------------------------

[09/09/17 07:53:48:048 CST] main-EventThread INFO zkclient.ZkClient: zookeeper state changed (SyncConnected)-------------------------------------------——————————dubbo register provider----------------------------------

[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Register: dubbo://169.254.69.197: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=7372&side=provider×tamp=1504958016968, dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Subscribe: provider://169.254.69.197: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=7372&side=provider×tamp=1504958016968, dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:53:48:048 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Notify urls for subscribe url provider://169.254.69.197: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=7372&side=provider×tamp=1504958016968, urls: [empty://169.254.69.197: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=7372&side=provider×tamp=1504958016968], dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:53:48:048 CST] main INFO container.Main: [DUBBO] Dubbo SpringContainer started!, dubbo version: 2.0.0, current host: 127.0.0.1[2017-09-09 19:53:48] Dubbo service server started!


在上面的啟動日志中,把dubbo主用的功能都標(biāo)注了出來。然后我們通過zookeeper Inspector再來看一下zookeeper 的變量。


我們可以看到zookeeper里面多一個dubbo節(jié)點(diǎn)。在dubbo節(jié)點(diǎn)下是我們發(fā)布的服務(wù):DemoService的全類名。在服務(wù)節(jié)點(diǎn)下面有configurations節(jié)點(diǎn)與providers節(jié)點(diǎn)。而在providers節(jié)點(diǎn)如下所示:

/dubbo/com.alibaba.dubbo.demo.DemoService/providers/dubbo%3A%2F%2F169.254.69.197%3A20880%2Fcom.alibaba.dubbo.demo.DemoService%3Fanyhost%3Dtrue%26application%3Ddemo-provider%26dubbo%3D2.0.0%26generic%3Dfalse%26interface%3Dcom.alibaba.dubbo.demo.DemoService%26loadbalance%3Droundrobin%26methods%3DsayHello%26owner%3Dwilliam%26pid%3D15284%26side%3Dprovider%26timestamp%3D1504957132315

這正是我們對provider的配置信息。

所以在provider啟動的時候做了以下幾件事:

連接zookeeper注冊中心,用于dubbo的注冊中心

把服務(wù)配置信息以url的形式注冊到zookeeper上面

創(chuàng)建了一個configuration節(jié)點(diǎn),用于監(jiān)聽訂閱admin的對provider的修改

4、Dubbo Consumer

下面我們就來啟動dubbo-demo項目中子項目目dubbo-demo-consumer來監(jiān)控Dubbo在啟動Consumer的時候都做了哪些事。首先我們需要把配置文件修改一下。把注冊中心替換成Zookeeper.

dubbo\dubbo-demo\dubbo-demo-consumer\src\test\resources\dubbo.properties

dubbo.container=log4j,spring

dubbo.application.name=demo-consumer

dubbo.application.owner=#dubbo.registry.address=multicast://224.5.6.7:1234dubbo.registry.address=zookeeper://127.0.0.1:2181#dubbo.registry.address=redis://127.0.0.1:6379#dubbo.registry.address=dubbo://127.0.0.1:9090dubbo.monitor.protocol=registry#dubbo.log4j.file=logs/dubbo-demo-consumer.log#dubbo.log4j.level=WARN


然后使用demo里面的項目來啟動Consumer。啟動類為:com.alibaba.dubbo.demo.consumer.DemoConsumer,它是以main方法啟動。

public class DemoConsumer {

? ? public static void main(String[] args) {

? ? ? ? com.alibaba.dubbo.container.Main.main(args);

? ? }

}

我們首先來觀察一下dubbo Consumer的啟動目錄。

Connected to the target VM, address: '127.0.0.1:56208', transport: 'socket'[09/09/17 07:58:52:052 CST] main INFO logger.LoggerFactory: using logger: com.alibaba.dubbo.common.logger.log4j.Log4jLoggerAdapter[09/09/17 07:58:52:052 CST] main INFO container.Main: [DUBBO] Use container type([log4j, spring]) to run dubbo serivce., dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:58:52:052 CST] main INFO container.Main: [DUBBO] Dubbo Log4jContainer started!, dubbo version: 2.0.0, current host: 127.0.0.1[09/09/17 07:58:52:052 CST] main INFO support.ClassPathXmlApplicationContext: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6483f5ae: startup date [Sat Sep 09 19:58:52 CST 2017]; root of context hierarchy[09/09/17 07:58:52:052 CST] main INFO xml.XmlBeanDefinitionReader: Loading XML bean definitions from file [E:\Project\github\dubbo\dubbo-demo\dubbo-demo-consumer\target\classes\META-INF\spring\dubbo-demo-action.xml][09/09/17 07:58:53:053 CST] main INFO xml.XmlBeanDefinitionReader: Loading XML bean definitions from file [E:\Project\github\dubbo\dubbo-demo\dubbo-demo-consumer\target\classes\META-INF\spring\dubbo-demo-consumer.xml][09/09/17 07:58:53:053 CST] main INFO support.DefaultListableBeanFactory: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@3098cf3b: defining beans [com.alibaba.dubbo.demo.consumer.DemoAction#0,demoService]; root of factory hierarchy[09/09/17 07:58:55:055 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Load registry store file C:\Users\Carl\.dubbo\dubbo-registry-127.0.0.1.cache, data: {com.alibaba.dubbo.demo.DemoService=empty://169.254.69.197: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=5264&side=provider×tamp=1504958323428}, dubbo version: 2.0.0, current host: 127.0.0.1--------------------------------------start connection zookeeper------------------------------------------[09/09/17 07:58:55:055 CST] ZkClient-EventThread-15-127.0.0.1:2181 INFO zkclient.ZkEventThread: Starting ZkClient event thread.[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:zookeeper.version=3.3.3-1073969, built on 02/23/2011 22:27 GMT[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:host.name=carl[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:java.version=1.8.0_141[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:java.vendor=Oracle Corporation[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:java.home=D:\tool\Java\jdk1.8.0_141\jre[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:java.io.tmpdir=C:\Users\Carl\AppData\Local\Temp\[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:java.compiler=[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:os.name=Windows 10[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:os.arch=amd64[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:os.version=10.0[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:user.name=Carl[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:user.home=C:\Users\Carl[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Client environment:user.dir=E:\Project\github\dubbo[09/09/17 07:59:04:004 CST] main INFO zookeeper.ZooKeeper: Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.I0Itec.zkclient.ZkClient@1bd39d3c[09/09/17 07:59:05:005 CST] main-SendThread() INFO zookeeper.ClientCnxn: Opening socket connection to server /127.0.0.1:2181[09/09/17 07:59:05:005 CST] main-SendThread(127.0.0.1:2181) INFO zookeeper.ClientCnxn: Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session[09/09/17 07:59:05:005 CST] main-SendThread(127.0.0.1:2181) INFO zookeeper.ClientCnxn: Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x15e664ff295000e, negotiated timeout = 30000-------------------------------------------dubbo connectioned-------------------------------------[09/09/17 07:59:05:005 CST] main-EventThread INFO zkclient.ZkClient: zookeeper state changed (SyncConnected)-------------------------------------------dubbo Register consumer-------------------------------------[09/09/17 07:59:05:005 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Register: consumer://169.254.69.197/com.alibaba.dubbo.demo.DemoService?application=demo-consumer&category=consumers&check=false&dubbo=2.0.0&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=14604&side=consumer×tamp=1504958335273, dubbo version: 2.0.0, current host: 169.254.69.197[09/09/17 07:59:05:005 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Subscribe: consumer://169.254.69.197/com.alibaba.dubbo.demo.DemoService?application=demo-consumer&category=providers,configurators,routers&dubbo=2.0.0&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=14604&side=consumer×tamp=1504958335273, dubbo version: 2.0.0, current host: 169.254.69.197[09/09/17 07:59:05:005 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Notify urls for subscribe url consumer://169.254.69.197/com.alibaba.dubbo.demo.DemoService?application=demo-consumer&category=providers,configurators,routers&dubbo=2.0.0&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=14604&side=consumer×tamp=1504958335273, urls: [dubbo://169.254.69.197: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=5264&side=provider×tamp=1504958323428, empty://169.254.69.197/com.alibaba.dubbo.demo.DemoService?application=demo-consumer&category=configurators&dubbo=2.0.0&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=14604&side=consumer×tamp=1504958335273, empty://169.254.69.197/com.alibaba.dubbo.demo.DemoService?application=demo-consumer&category=routers&dubbo=2.0.0&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=14604&side=consumer×tamp=1504958335273], dubbo version: 2.0.0, current host: 169.254.69.197[09/09/17 07:59:05:005 CST] main INFO transport.AbstractClient: [DUBBO] Successed connect to server /169.254.69.197:20880 from NettyClient 169.254.69.197 using dubbo version 2.0.0, channel is NettyChannel [channel=[id: 0x61ce23ac, /169.254.69.197:56252 => /169.254.69.197:20880]], dubbo version: 2.0.0, current host: 169.254.69.197[09/09/17 07:59:05:005 CST] main INFO transport.AbstractClient: [DUBBO] Start NettyClient carl/169.254.69.197 connect to the server /169.254.69.197:20880, dubbo version: 2.0.0, current host: 169.254.69.197[09/09/17 07:59:05:005 CST] main INFO config.AbstractConfig: [DUBBO] Refer dubbo service com.alibaba.dubbo.demo.DemoService from url zookeeper://127.0.0.1:2181/com.alibaba.dubbo.registry.RegistryService?anyhost=true&application=demo-consumer&check=false&dubbo=2.0.0&generic=false&interface=com.alibaba.dubbo.demo.DemoService&loadbalance=roundrobin&methods=sayHello&monitor=dubbo%3A%2F%2F127.0.0.1%3A2181%2Fcom.alibaba.dubbo.registry.RegistryService%3Fapplication%3Ddemo-consumer%26dubbo%3D2.0.0%26pid%3D14604%26protocol%3Dregistry%26refer%3Ddubbo%253D2.0.0%2526interface%253Dcom.alibaba.dubbo.monitor.MonitorService%2526pid%253D14604%2526timestamp%253D1504958335528%26registry%3Dzookeeper%26timestamp%3D1504958335433&owner=william&pid=14604&side=consumer×tamp=1504958335273, dubbo version: 2.0.0, current host: 169.254.69.197-------------------------------------------dubbo Register monitor routers-------------------------------------[09/09/17 07:59:06:006 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Register: consumer://169.254.69.197/com.alibaba.dubbo.monitor.MonitorService?category=consumers&check=false&dubbo=2.0.0&interface=com.alibaba.dubbo.monitor.MonitorService&pid=14604×tamp=1504958335528, dubbo version: 2.0.0, current host: 169.254.69.197[09/09/17 07:59:06:006 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Subscribe: consumer://169.254.69.197/com.alibaba.dubbo.monitor.MonitorService?category=providers,configurators,routers&dubbo=2.0.0&interface=com.alibaba.dubbo.monitor.MonitorService&pid=14604×tamp=1504958335528, dubbo version: 2.0.0, current host: 169.254.69.197[09/09/17 07:59:06:006 CST] main INFO zookeeper.ZookeeperRegistry: [DUBBO] Notify urls for subscribe url consumer://169.254.69.197/com.alibaba.dubbo.monitor.MonitorService?category=providers,configurators,routers&dubbo=2.0.0&interface=com.alibaba.dubbo.monitor.MonitorService&pid=14604×tamp=1504958335528, urls: [empty://169.254.69.197/com.alibaba.dubbo.monitor.MonitorService?category=providers&dubbo=2.0.0&interface=com.alibaba.dubbo.monitor.MonitorService&pid=14604×tamp=1504958335528, empty://169.254.69.197/com.alibaba.dubbo.monitor.MonitorService?category=configurators&dubbo=2.0.0&interface=com.alibaba.dubbo.monitor.MonitorService&pid=14604×tamp=1504958335528, empty://169.254.69.197/com.alibaba.dubbo.monitor.MonitorService?category=routers&dubbo=2.0.0&interface=com.alibaba.dubbo.monitor.MonitorService&pid=14604×tamp=1504958335528], dubbo version: 2.0.0, current host: 169.254.69.197[19:59:06] Hello world0, response form provider: 169.254.69.197:20880[09/09/17 07:59:08:008 CST] main INFO container.Main: [DUBBO] Dubbo SpringContainer started!, dubbo version: 2.0.0, current host: 169.254.69.197[2017-09-09 19:59:08] Dubbo service server started![09/09/17 08:31:18:018 CST] DubboServerHandler-169.254.69.197:20880-thread-199 INFO dubbo.DubboProtocol: [DUBBO] disconected from /169.254.69.197:56751,url:dubbo://169.254.69.197:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&channel.readonly.sent=true&codec=dubbo&dubbo=2.0.0&generic=false&heartbeat=60000&interface=com.alibaba.dubbo.demo.DemoService&loadbalance=roundrobin&methods=sayHello&monitor=dubbo%3A%2F%2F127.0.0.1%3A2181%2Fcom.alibaba.dubbo.registry.RegistryService%3Fapplication%3Ddemo-provider%26dubbo%3D2.0.0%26owner%3Dwilliam%26pid%3D16392%26protocol%3Dregistry%26refer%3Ddubbo%253D2.0.0%2526interface%253Dcom.alibaba.dubbo.monitor.MonitorService%2526pid%253D16392%2526timestamp%253D1504958572777%26registry%3Dzookeeper%26timestamp%3D1504958572167&owner=william&pid=16392&side=provider×tamp=1504958572254, dubbo version: 2.0.0, current host: 169.254.69.197-------------------------定時發(fā)送數(shù)據(jù)到monitor------------------------[09/09/17 08:32:00:000 CST] DubboMonitorSendTimer-thread-3 INFO dubbo.DubboMonitor: [DUBBO] Send statistics to monitor zookeeper://127.0.0.1:2181/com.alibaba.dubbo.monitor.MonitorService?dubbo=2.0.0&interface=com.alibaba.dubbo.monitor.MonitorService&pid=16392×tamp=1504958572777, dubbo version: 2.0.0, current host: 169.254.69.197[09/09/17 08:32:00:000 CST] DubboMonitorSendTimer-thread-3 ERROR dubbo.DubboMonitor: [DUBBO] Unexpected error occur at send statistic, cause: Forbid consumer 169.254.69.197 access service com.alibaba.dubbo.monitor.MonitorService from registry 127.0.0.1:2181 use dubbo version 2.0.0, Please check registry access list (whitelist/blacklist)., dubbo version: 2.0.0, current host: 169.254.69.197

在上面的啟動日志中,把dubbo主用的功能都標(biāo)注了出來。然后我們通過zookeeper Inspector再來看一下zookeeper 的變化。


首先針對于我們的服務(wù)節(jié)點(diǎn)com.alibaba.dubbo.demo.DemoService多了一個consumers節(jié)點(diǎn)的配置信息。

consumer%3A%2F%2F169.254.69.197%2Fcom.alibaba.dubbo.demo.DemoService%3Fapplication%3Ddemo-consumer%26category%3Dconsumers%26check%3Dfalse%26dubbo%3D2.0.0%26interface%3Dcom.alibaba.dubbo.demo.DemoService%26methods%3DsayHello%26pid%3D16704%26side%3Dconsumer%26timestamp%3D1504958628702

這個信息就是我們的對于consumer的配置信息。然后還多了一個routers節(jié)點(diǎn)。 這個是我們可以配置demo的路由信息。上面還多了一個com.alibaba.dubbo.monitor.MonitorService節(jié)點(diǎn)用于監(jiān)控dubbo。

5、總結(jié)

通過上面我們對dubbo Provider/Consumer的啟動日志以及通過Zookeeper Inspector對zookeeper服務(wù)的觀察我們可以得到dubbo下面的架構(gòu)圖。

喜歡交流JAVA技術(shù)的可以關(guān)注私信我,注明技術(shù)交流,歡迎各位愛學(xué)習(xí)的朋友。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,401評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,011評論 3 413
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,263評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,543評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,323評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,874評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,968評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,095評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,605評論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,551評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,720評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,242評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,961評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,358評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,612評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,330評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,690評論 2 370

推薦閱讀更多精彩內(nèi)容