ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Dubbo-服务发布

2020-04-29 20:02:51  阅读:328  来源: 互联网

标签:Dubbo 服务 DemoService dubbo demo 192.168 alibaba 发布 com


  Dubbo服务端启动步骤:

    1.Export dubbo service 暴露本地服务

 main  INFO config.AbstractConfig:  [DUBBO] Export dubbo service com.alibaba.dubbo.demo.DemoService to local registry, dubbo version: , current host: 192.168.10.1

 

    2.Register dubbo service 暴露远程服务

 main  INFO config.AbstractConfig:  [DUBBO] Export dubbo service com.alibaba.dubbo.demo.DemoService to url dubbo://192.168.10.1:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&bean.name=com.alibaba.dubbo.demo.DemoService&bind.ip=192.168.10.1&bind.port=20880&dubbo=2.0.2&generic=false&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=52884&qos.port=22222&side=provider&timestamp=1588143599790, dubbo version: , current host: 192.168.10.1

 main  INFO config.AbstractConfig:  [DUBBO] Register dubbo service com.alibaba.dubbo.demo.DemoService url dubbo://192.168.10.1:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&bean.name=com.alibaba.dubbo.demo.DemoService&bind.ip=192.168.10.1&bind.port=20880&dubbo=2.0.2&generic=false&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=52884&qos.port=22222&side=provider&timestamp=1588143599790 to registry registry://127.0.0.1:2181/com.alibaba.dubbo.registry.RegistryService?application=demo-provider&dubbo=2.0.2&pid=52884&qos.port=22222&registry=zookeeper&timestamp=1588143599751, dubbo version: , current host: 192.168.10.1

    3.Start NettyServer 启动netty

 main  INFO transport.AbstractServer:  [DUBBO] Start NettyServer bind /0.0.0.0:20880, export /192.168.10.1:20880, dubbo version: , current host: 192.168.10.1

    4.zookeeper.ClientCnxn:opening socket  打开链接zk

 main-SendThread(127.0.0.1:2181)  INFO zookeeper.ClientCnxn: Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)

    5.ZookeeperRegistry:到zk注册

 main INFO zookeeper.ZookeeperRegistry: [DUBBO] Register: dubbo://192.168.10.1:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&bean.name=com.alibaba.dubbo.demo.DemoService&dubbo=2.0.2&generic=false&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=52884&side=provider&timestamp=1588143599790, dubbo version: , current host: 192.168.10.1
 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 = 0x171ab21a20e0020, negotiated timeout = 40000

    6.Subscribe   监听zk

 main  INFO zookeeper.ZookeeperRegistry:  [DUBBO] Subscribe: provider://192.168.10.1:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&bean.name=com.alibaba.dubbo.demo.DemoService&category=configurators&check=false&dubbo=2.0.2&generic=false&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=52884&side=provider&timestamp=1588143599790, dubbo version: , current host: 192.168.10.1

 

 

源码分析:

 

 

 

 

 

   找对对应的ServiceBean类,发现实现了ApplicationListener接口实现了onApplicationEvent方法,调用了export()方法

 

 

 调用继承类ServiceConfig方法export()

 

 暴露服务

 

   暴露本地服务:只暴露在同一个JVM里面,不用通过zk来进行远程通信。例如:同一个服务,自己调用用自己接口,就没必要进行网路ip链接通讯

  暴露远程服务:指暴露给远程客户端的ip和端口号,通过网络实通信

 

 

ServiceBean.onApplicationEvent

  -->export()

    -->ServiceConfig.export()

      -->doExport()

        -->doExportUrls()  //<dubbo:protocol name="dubbo" port="20880" id="dubbo" />

          -->loadRegistries(ture)  // 从dubbo配置文件组装registry的url信息   registry://127.0.0.1:2181/com.alibaba.dubbo.registry.RegistryService?application=demo-provider&dubbo=2.0.2&pid=55548&qos.port=22222&registry=zookeeper&timestamp=1588146544281

          -->doExportUrlsFor1Protocol //暴露服务

            -->exportLocal(url)//暴露本地服务

              -->proxyFactory.getInvoker(ref, (Class) interfaceClass, local));

                -->JavassitPorxyFactory.getInvoker

                  -->Wrapper.getWrapper

                    -->makeWrapper  

                  -->return new AbstractProxyInvoker

 

 

1.proxyFactory:就是为了获取一个接口的代理类,例如获取一个远程接口的代理

  getInvoker:针对server端,将服务对象,例如DemoServiceImpl包装成一个Invoker对象

  getProxy:针对client端,创建接口的的代理对象。例如DemoService的接口

2.Wrapper:类似springde BeanWrapper,包装了一个接口或者一个类,可以通过wrapper对实例对象进行赋值、取值以及指定方法调用

3.Invoker:它是一个可执行的对象,能够根据方法的名称、参数得到相应的执行结果

    Result invoke(Invocation invocation)   
    Invocation包含了需要执行的方法和参数等信息,有两个实现类RpcInvocation和MockInvocation
三种类型的Invoker
  1.本地执行类的Invoker
  2.远程调用类的Invoker
  3.多个远程通信执行类的Invoker聚合成集群版的Invoker

--

 

--

 

 

 

 

 

 

 

 

    

 

标签:Dubbo,服务,DemoService,dubbo,demo,192.168,alibaba,发布,com
来源: https://www.cnblogs.com/huan30/p/12794558.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有