背景說明
- HSF是閉源的,考慮用開源產品(dubbo)進行替代,
- 如果是考慮要從一個rpc框架轉成另一個,或許也可以參考本文,
- 主要思想:進行rpc的發布、訂閱操作,其實是集中在2個類里面(provider/consumer),而不是散落在每個實作類里面,而替換成其它rpc時候,就是針對父類(providerFather/consumerFather)進行適配即可,
架構對比


可行性分析
- HSF、dubbo都出自阿里(只不過后來dubbo開源了,捐給了apache),它們的開發設計團隊好像是不同的,但它們設計思想很類似;
- 這2種rpc都是基于spring的吧?(意思它們沒有依賴springboot,或者其它什么東西);
- 這2種方式都是通過發布訂閱來實作rpc的,都可以使用xml配置,api呼叫方式,(dubbo還有注解方式,hsf好像沒有)
源專案(hsf)說明
- 1,本地使用,是用alitomcat+pandora的方式,
- 2,具體版本是:taobao-tomcat-7.0.59、edas-lightweight-server-1.0.0、pandora不記得是哪個版本了,反正不是最新的,(感覺pandora跟alitomcat有對應關系,不然會注冊不到注冊中心)
- 3,代碼中自定義了注解,集中處理provider、consumer,會把provider注冊到注冊中心,把consumer快取到map,呼叫的時候通過getObject的方式,創建代理物件獲取遠程結果,整體來講,用到了繼承+切面,這些思想,通過少量侵入,實作了rpc呼叫,
具體實操
- 1,引入包,需要引入dubbo的包,還有dubbo連edas的包,具體就不列舉了,如果注冊中心是其它,需要對應引入其它包;
- 2,通過適配的方式,寫關于dubbo的provider/consumer初始化類,
- 3,處理一些例外問題,
中間遇到的一些問題
- 1,dubbo,provider、consumer都需要設定應用名稱,如果一個同時啟provider、consumer會有點問題,可以用代碼解決;
- 2,注冊到注冊中心(edas)時候,如果長度過長,超過2048,會注冊不進去,這個應該可以通過調整pandora版本解決(具體看pandora 容器版本說明),也可以換注冊中心解決;
- 3,dubbo遠程呼叫回傳物件時,物件需要可序列號,這個可以通過改代碼解決,
參考資料
- 阿里巴巴微服務架構演進
- hsf(ali-tomcat)安裝使用
- pandora 容器版本說明
- 將應用從HSF架構遷移到Dubbo(Ali-Tomcat)
- hsf API手冊
- dubbo API 配置
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/502262.html
標籤:架構設計
上一篇:六,手寫SpringMVC框架--什么是ThreadLocal?
下一篇:經典設計原則 - SOLID
