最近一段時間沒有工作,爲此也有大把的時間,可以做一些平時沒有時間做的事情,借事情來重建自己的知識體系,查漏補缺。
決定要利用這一段時間來實現一個服務化框架,實現得七七八八的時候再在github上開源。
(一)服務化框架特徵
1、支持無狀態、多版本
2、支持熱部署、自發現、fail over(自動發佈服務、自動發現服務、自動失敗轉移)
3、支持路徑跟蹤(統一的調用跟蹤信息,可還原)
4、支持可配置的負載均衡(採用默認負載均衡、可配置的負載均衡機制)
5、序列化協議可配置(默認、Java、Hessian、Google protocal buffer、thrift等幾種)
6、網絡框架可置換(自實現一個類似Hadoop IO框架、Mina等)
7、Spring配置支持(強限制)
8、服務可管理(調用支持配額制、支持自動降級、服務依賴跟蹤)
(二)基本功能(V0.1)
1、定義完整的消息格式
2、序列化支持Hessian
3、支持自實現的類似Hadoop I/O框架
4、支持無狀態、多版本
(三)設計概要
(1)遠程請求消息格式
元數據版本號(版本號變化可以支持不同的元數據格式)
請求元數據字節長度
請求參數字節長度
請求元數據定義:
接口名稱(服務提供方的接口名稱)
方法名(服務提供方的方法名稱)
版本號(同一方法支持多版本,不同邏輯)
協議名(參數序列化協議名稱,比如hessian)
父事物標識(調用來源,可以串起首發請求以及依賴的請求調用)
來源APP、來源IP(待定,支持流控與降級)
請求方法參數定義:
方法請求參數列表
(2)rpc概要
服務端支持NIO
客戶端使用阻塞方式,客戶端與服務端之間採用長連接