Soul 學習筆記之 alibaba dubbo / apache dubbo (十二)
阿新 • • 發佈:2021-01-29
目錄
總系列目錄地址
dubbo相關資料可以看官網
dubbo註冊機制
- 載入starter, soul-spring-boot-starter-client-alibaba-dubbo。如:SoulAlibabaDubboClientConfiguration/SoulApacheDubboClientConfiguration
- 載入bean, AlibabaDubboServiceBeanPostProcessor, 各種框架協議的各自實現。
2.1 初始化時啟動一個執行緒池,poolSize=1
2.3 handler, 找 SoulDubboClient 註解把相關的服務通過 okClient 傳送到 admin,通過放射方式拿到註解方法裡面的各種引數。
日誌列印:2021-01-28 06:35:00.123 INFO 12864 --- [pool-1-thread-1] o.d.s.client.common.utils.RegisterUtils : dubbo client register success: {
總的來說,dubbo 外掛程式碼都是一樣的,通過 spi 機制載入,具體實現放在 xxxPostProcessor 裡面,由 spring ContextRefreshedEvent 找到 jvm 裡的 dubbo.ServiceBean,經過處理生成 json 通過 http post 方式註冊到 admin。
dubbo訪問機制
- 訪問統一介面 SoulWebHandler, 責任鏈模式,一層一層執行直到 AlibabaDubboPlugin
- 先執行AbstractSoulPlugin 模板方法裡面的 execute, 最終執行到具體實現方法 AlibabaDubboPlugin.doExecute, 執行 plugin 裡自定義的動作
- alibabaDubboProxyService.genericInvoker
sofa註冊和訪問機制都跟dubbo類似
總結
外掛機制都是使用 soul 屬性的 starter 方式,基本上所有功能都以SPI方式註冊。每個 plugin 的實現都不一樣, 但是統一了抽象方法。
觀察發現 dubbbo/sofa 的外掛結構都是一樣的,cache,handler,proxy,response,subscriber。 這些都是被抽象出來的,具體實現由外掛實現。