服務框架基礎知識總結


在軟件系統組成越發復雜的今天,如何保證每個服務間的通信,是系統架構師必須考慮的重要一點。

作為一名軟件測試工程師,了解系統架構以及服務間的通信過程及原理,對我們開展測試工作有很大的幫助。

這篇博客,簡單介紹下常見的一些通信服務框架基礎知識。。。

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

 

要組成一個基本的通信服務框架,最起碼需要這三部分:統一的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),都有可視化的管理界面,如下:

 

以上,即為通信服務框架基礎知識的總結,僅供參考,更多內容,請自行探索。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM