本文將為大家介紹當下最流行的服務治理、微服務等相關內容,從服務治理、SOA、微服務到最新的服務網格(Service Mesh)進行綜合介紹和分析。易商阜極自2017年開始積極引進微服務的理念,並運用於多個項目實踐中,為項目升級改造帶來了顯著效果。本文將以Dubbo為例,向大家介紹SOA、服務治理等概念,以及Dubbo的基礎知識和最新發展情況。
SOA與服務治理
SOA(面向服務的體系結構)概念由來已久,在10多年前便開始進入到我們廣大軟體開發者的視線中。SOA是一種粗粒度、松耦合服務架構,服務之間通過簡單、精確定義介面進行通訊,不涉及底層編程介面和通訊模型。SOA可以看作是B/S模型、Web Service技術之後的自然延伸。
服務治理,也稱為SOA治理,是指用來管理SOA的採用和實現的過程。以下是在2006年時IBM對於服務治理要點的總結:
- 服務定義(服務的範圍、介面和邊界)
- 服務部署生命周期(各個生命周期階段)
- 服務版本治理(包括兼容性)
- 服務遷移(啟用和退役)
- 服務註冊中心(依賴關係)
- 服務消息模型(規範數據模型)
- 服務監視(進行問題確定)
- 服務所有權(企業組織)
- 服務測試(重複測試)
- 服務安全(包括可接受的保護範圍)
限於當時的技術發展水平,廣大軟體設計與開發人員對於SOA和服務治理的技術認知還主要停留在Web Service和ESB匯流排等技術和規範上,並沒有真正在軟體開發中得以充分落地。
Dubbo開源
直到2011年10月27日,阿里巴巴開源了自己的SOA服務化治理方案的核心框架Dubbo,服務治理和SOA的設計理念開始逐漸在國內軟體行業中落地,並被廣泛應用。
Dubbo作為阿里巴巴內部的SOA服務化治理方案的核心框架,在2012年時已經每天為2000+個服務提供3,000,000,000+次訪問量支持,並被廣泛應用於阿里巴巴集團的各成員站點。Dubbo自2011年開源後,已被許多非阿里系公司使用,其中既有噹噹網、網易考拉等互聯網公司,也有中國人壽、青島海爾等傳統企業。
Dubbo簡介
Dubbo是一個高性能服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案,使得應用可通過高性能RPC實現服務的輸出和輸入功能,和Spring框架可以無縫集成。
作為一個分散式服務框架,以及SOA治理方案,Dubbo其功能主要包括:高性能NIO通訊及多協議集成,服務動態定址與路由,軟負載均衡與容錯,依賴分析與服務降級等。Dubbo最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合(或者最大限度地松耦合)。從服務模型的角度來看,Dubbo採用的是一種非常簡單的模型,要麼是提供方提供服務,要麼是消費方消費服務,所以基於這一點可以抽象出服務提供方(Provider)和服務消費方(Consumer)兩個角色。
Dubbo包含遠程通訊、集群容錯和自動發現三個核心部分。提供透明化的遠程方法調用,實現像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。同時具備軟負載均衡及容錯機制,可在內網替代F5等硬體負載均衡器,降低成本,減少單點。可以實現服務自動註冊與發現,不再需要寫死服務提供方地址,註冊中心基於介面名查詢服務提供者的IP地址,並且能夠平滑添加或刪除服務提供者。
下圖來自Dubbo官網,描述了服務註冊中心、服務提供方、服務消費方、服務監控中心之間的調用關係,具體如下圖所示: