Dubbo原始碼之服務端的釋出
Dubbo服務釋出-原理
第一個釋出的動作:暴露本地服務
Export dubbo service com.alibaba.dubbo.demo.DemoService to local registry, dubbo version: 2.0.0, current host: 127.0.0.1
第二個釋出動作:暴露遠端服務
Export dubbo service com.alibaba.dubbo.demo.DemoService to url dubbo://192.168.100.38: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=8484&side=provider×tamp=1473908495465, dubbo version: 2.0.0, current host: 127.0.0.1
Register dubbo service com.alibaba.dubbo.demo.DemoService url dubbo://192.168.100.38: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%2F192.168.48.117%3A2181%2Fcom.alibaba.dubbo.registry.RegistryService%3Fapplication%3Ddemo-provider%26backup%3D192.168.48.120%3A2181%2C192.168.48.123%3A2181%26dubbo%3D2.0.0%26owner%3Dwilliam%26pid%3D8484%26protocol%3Dregistry%26refer%3Ddubbo%253D2.0.0%2526interface%253Dcom.alibaba.dubbo.monitor.MonitorService%2526pid%253D8484%2526timestamp%253D1473908495729%26registry%3Dzookeeper%26timestamp%3D1473908495398&owner=william&pid=8484&side=provider×tamp=1473908495465 to registry registry://192.168.48.117:2181/com.alibaba.dubbo.registry.RegistryService?application=demo-provider&backup=192.168.48.120:2181,192.168.48.123:2181&dubbo=2.0.0&owner=william&pid=8484®istry=zookeeper×tamp=1473908495398, dubbo version: 2.0.0, current host: 127.0.0.1
第三個釋出動作:啟動netty
Start NettyServer bind /0.0.0.0:20880, export /192.168.100.38:20880, dubbo version: 2.0.0, current host: 127.0.0.1
第四個釋出動作:開啟連線zk
INFO zookeeper.ClientCnxn: Opening socket connection to server /192.168.48.117:2181
第五個釋出動作:到zk註冊
Register: dubbo://192.168.100.38: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=8484&side=provider×tamp=1473908495465, dubbo version: 2.0.0, current host: 127.0.0.1
第六個釋出動作;監聽zk
Subscribe: provider://192.168.100.38: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=8484&side=provider×tamp=1473908495465, dubbo version: 2.0.0, current host: 127.0.0.1
Notify urls for subscribe url provider://192.168.100.38: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=8484&side=provider×tamp=1473908495465, urls: [empty://192.168.100.38: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=8484&side=provider×tamp=1473908495465], dubbo version: 2.0.0, current host: 127.0.0.1
暴露本地服務和暴露遠端服務的區別是什麼?
1.暴露本地服務:指暴露在用一個JVM裡面,不用通過呼叫zk來進行遠端通訊。例如:在同一個服務,自己呼叫自己的介面,就沒必要進行網路IP連線來通訊。
2.暴露遠端服務:指暴露給遠端客戶端的IP和埠號,通過網路來實現通訊。
Dubbo服務釋出-整體架構設計圖
Dubbo的重要概念-proxyFactory
就是為了獲取一個介面的代理類,例如獲取一個遠端介面的代理。
它有2個方法,代表2個作用
a.getInvoker:針對server端,將服務物件,如DemoServiceImpl包裝成一個Invoker物件。
b.getProxy :針對client端,建立介面的代理物件,例如DemoService的介面。
Dubbo的重要概念-Wrapper
它類似spring的BeanWrapper,它就是包裝了一個介面或一個類,可以通過wrapper對例項物件進行賦值 取值以及制定方法的呼叫。
Dubbo的重要概念-exporter
維護invoder的生命週期
Dubbo的重要概念-exchanger
資訊交換層,封裝請求響應模式,同步轉非同步。
Dubbo的重要概念-transporter
網路傳輸層,用來抽象netty和mina的統一介面。
Dubbo的核心級概念-invoker
它是一個可執行的物件,能夠根據方法的名稱、引數得到相應的執行結果。
它裡面有一個很重要的方法 Result invoke(Invocation invocation),
Invocation是包含了需要執行的方法和引數等重要資訊,目前它只有2個實現類RpcInvocation MockInvocation
它有3種型別的Invoker
1.本地執行類的Invoker
server端:要執行 demoService.sayHello,就通過InjvmExporter來進行反射執行demoService.sayHello就可以了。
2.遠端通訊類的Invoker
client端:要執行 demoService.sayHello,它封裝了DubboInvoker進行遠端通訊,傳送要執行的介面給server端。
server端:採用了AbstractProxyInvoker執行了DemoServiceImpl.sayHello,然後將執行結果返回傳送給client.
3.多個遠端通訊執行類的Invoker聚合成叢集版的Invoker
client端:要執行 demoService.sayHello,就要通過AbstractClusterInvoker來進行負載均衡,DubboInvoker進行遠端通訊,傳送要執行的介面給server端。
server端:採用了AbstractProxyInvoker執行了DemoServiceImpl.sayHello,然後將執行結果返回傳送給client.
相關文章
- Dubbo原始碼解析之服務釋出與註冊原始碼
- Dubbo原始碼學習之-服務匯出原始碼
- Dubbo原始碼之服務引用原始碼
- Dubbo原始碼解析之服務匯出過程原始碼
- Dubbo原始碼分析(五)Dubbo呼叫鏈-服務端原始碼服務端
- Dubbo原始碼分析之服務引用原始碼
- Dubbo原始碼分析之服務暴露原始碼
- Dubbo原始碼解析之服務叢集原始碼
- Dubbo原始碼解析之服務引入過程原始碼
- Dubbo原始碼解析之服務呼叫過程原始碼
- Dubbo原理和原始碼解析之服務引用原始碼
- Dubbo原始碼解析之客戶端初始化及服務呼叫原始碼客戶端
- Dubbo原始碼分析(三)Dubbo的服務引用Refer原始碼
- Dubbo原始碼解析之服務端接收訊息原始碼服務端
- dubbo服務者原始碼分期原始碼
- Dubbo服務暴露原始碼解析②原始碼
- Dubbo2.7.3版本原始碼學習系列六: Dubbo服務匯出原始碼解析原始碼
- 聊聊Dubbo(九):核心原始碼-服務端啟動流程2原始碼服務端
- 聊聊Dubbo(九):核心原始碼-服務端啟動流程1原始碼服務端
- dubbo原始碼分析02:服務引用原始碼
- Dubbo原始碼分析十一、服務路由原始碼路由
- SOFA 原始碼分析 —— 服務釋出過程原始碼
- Dubbo原始碼分析(七)服務目錄原始碼
- Dubbo服務呼叫過程原始碼解析④原始碼
- Dubbo原始碼分析(六)服務引用的具體流程原始碼
- Dubbo-go 原始碼筆記(一)Server 端開啟服務過程Go原始碼筆記Server
- netty原始碼分析之服務端啟動全解析Netty原始碼服務端
- Spring Cloud系列(三):Eureka原始碼解析之服務端SpringCloud原始碼服務端
- Dubbo原始碼分析(四)服務暴露的具體流程(上)原始碼
- Dubbo原始碼分析(五)服務暴露的具體流程(下)原始碼
- dubbo原始碼分析之服務呼叫方發起呼叫(入口InvokerInvocationHandler.invoke)原始碼
- Dubbo原始碼學習之-通過原始碼看看dubbo對netty的使用原始碼Netty
- Dubbo原始碼解析之SPI原始碼
- Dubbo之SPI原始碼分析原始碼
- docsify 4.0 釋出,支援服務端渲染(SSR)服務端
- VC++RTSP服務端(附原始碼)C++服務端原始碼
- Dubbo之限流TpsLimitFilter原始碼分析MITFilter原始碼
- Netty原始碼分析(二):服務端啟動Netty原始碼服務端