Dubbo-service--服务启动

通过注解方式(service)进行暴漏服务

1. AnnotationBean通过调用postProcessAfterInitialization方法,得到(service)注解上的内容,创建一个ServiceBean。

2. 为ServiceBean 注入application,module,registries,provider,monitor,protocol等,初始化信息,在此过程中,有一个bug(2.5.3).。。。

接着调用ServieConfig的 export()方法。

3. 在ServiceConfig调用doExport()方法,进行暴漏url前的一系列检查(application,registries,protocol,interfaceandmethod,ref,interfacename....),注意mock有四种类型的参数(true,false,default,force),然后调用doExportUrls()方法。在此过程中有一个bug

判断字符串需要使用equals

4. 进入AbstractInterfaceConfig中的doExportUrls方法,将注册的协议转化成url

registry://192.168.243.128:2181/com.alibaba.dubbo.registry.RegistryService?application=provider&application.version=2.5.3&backup=192.168.243.128:2182,192.168.243.128:2183&dubbo=2.5.3&environment=test&owner=nlx&pid=8156&registry=zookeeper&timeout=3000&timestamp=1534343327353

5. 调用ServiceConfig的doExportUrlsFor1Protocol方法,将所有的配置转化成map,将之前map中的数据组装成url,调用url中buildString方法

dubbo://192.168.243.1:20882/org.spring.springboot.dubbo.CityDubboService?actives=1&anyhost=true&application=provider&application.version=2.5.3&cache=lru&document=This+is+dubbo+service&dubbo=2.5.3&dynamic=true&environment=test&executes=1&interface=org.spring.springboot.dubbo.CityDubboService&layer=aaa&methods=getHello,findCityByName&mock=true&owner=nlx&pid=14928&retries=2&side=provider&timeout=3000&timestamp=1534432451702

6. scope默认为null,默认是对url进行本地和远程暴露

配置若不是remote做本地暴漏

本地暴漏就是把protocol改为inJvm,host为127.0.0.1,port为0

配置若不是local做远程暴漏

进行服务暴露,调用RegisrtyProtocol中的export方法。

doLocalExport中主要开启netty监听服务

默认使用HeaderExchanger

开启netty服务端,就可以接受来自客户端的连接了。

接下来就是获取注册中心,向注册中心注册数据,

向zookeeper中 写入一个动态的url

最后把返回的export加入到exports集合中,

基本上服务的暴漏就已经完成了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值