服務框架基礎知識總結

轉載:https://www.cnblogs.com/imyalost/p/10274797.html

參考:《京東基礎架構建設之路》

 

要組成一個基本的通信服務框架,最起碼需要這三部分:統一的RPC框架、服務註冊中心、管理端。

一、RPC框架

RPC(Remote Procedure Call),即遠程過程調用。

百度百科:RPC框架

1、選擇RPC框架的注意事項

①、代碼規範:是否有基於某些標準協議的代碼生成,還是無代碼入侵;

②、通信協議:TCP/HTTP

③、序列化協議:是二進制還是文本格式,是否需要跨語言、性能如何;

④、I/O模型:是同步還是異步,是阻塞還是非阻塞模式;

⑤、負載均衡:負載均衡模式是客戶端軟負載、代理模式,還是服務端負載;

如果選型的框架爲開源框架,還需要考慮以下幾點:

①、成熟度:學習成本、難易程度、社區熱度、文檔是否詳細、是否有專門團隊維護更新、穩定性如何;

②、可擴展性:是否有SPI擴展,是否支持上下兼容;

③、跨語言:是否支持跨語言;

④、性能:作爲基礎服務,性能必須出色,否則服務框架本身會成爲瓶頸;

 

2、開源框架對比表

 

3、選型建議

①、與前端交互:適合選擇短連接、跨語言的框架,比如RESTful、gRPC;

②、純粹的後臺交互:適合選擇長連接、序列化爲二進制的框架,比如Thrift、Dubbo,這樣相對更高效;

③、小型團隊:如果是第一次使用,建議選擇規範化的RPC框架,比如Thrift、RESTful、gRPC;

④、大型團隊:大型團隊一般已有大量業務代碼,最好選擇無代碼入侵的框架,比如Dubbo、RESTful,否則改造成本將變得很大;

 

二、服務註冊中心

註冊中心相當於服務提供者和服務調用者之間的中間人,其提供服務註冊、服務發現、服務狀態檢測等基礎服務,在服務治理中的作用及其重要。

1、選型注意點

①、服務註冊:接收註冊信息的方式;

②、服務訂閱:返回訂閱信息的方式,push或者pull;

③、狀態檢測:檢測服務端的存活狀態;

如果選擇開源的註冊中心,則需要考慮如下幾點:

①、成熟度:學習成本、社區熱度、文檔是否詳細等;

②、維護成本:註冊中心日常維護;

③、數據結構:能否快速定位結果,是否可以進行遍歷篩選;

④、性能和穩定性:良好的性能和穩定性,是服務中心所必須具有的特質;

⑤、CAP原則:即數據一致性、服務可用性、分區容錯性。只能三選二,要麼選擇CP(關注一致性),要麼選擇AP(服務可用性);

CAP原則:百度百科

 

2、開源服務中心對比表

 

3、選型建議

①、規模小:建議選擇CP,RPC框架可直接接入數據源;

②、規模大:建議選擇AP,RPC框架不可以直接接入數據源;

③、跨機房/地域:儘量不要選強一致性協議的註冊中心,因爲跨機房跨地域本身帶來的時延性會對數據一致性造成很大幹擾;

PS:RPC框架必須具有註冊中心不可用情況下的容災策略,服務狀態檢測十分重要!!!

 

三、客戶端

客戶端即可視化管理的部分,可以通過web界面等方式,對服務提供者和調用者等相關信息進行可視化展示和管理操作。

比如常見的MQ(包括Active MQ、Scoket MQ和Rabbit MQ),都有可視化的管理界面,如下:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章