- 微服務架構原理與開發實戰
- 張剛編著
- 1155字
- 2024-01-22 18:20:43
1.2.3 服務調用設計
SOA的服務調用標準提出了3個核心概念,即服務提供者、服務消費者和服務注冊,應用程序可以通過服務注冊中心來管理服務提供者的服務信息,服務提供者可以主動向服務注冊中心注冊自己的服務信息,而服務消費者可以從服務注冊中心訂閱服務信息,服務注冊中心通過消息等方式通知與服務消費者相關的服務提供者的注冊信息,SOA服務調用設計圖如圖1.3所示。

圖1.3 SOA服務調用設計圖
筆者認為SOA的設計精華就在圖1.3中,不管微服務是否屬于SOA,它也采用了這一設計,可以說微服務和SOA在戰術設計上是類似的,但由于戰略設計的不同,微服務后來選擇了更輕量級的技術實現。
或許大家不是很明白,下面舉例說明,服務注冊與發現實例圖如圖1.4所示。

圖1.4 服務注冊與發現實例圖
一個公司往往有自己的OA系統,而OA系統中有一個最常用的功能——通訊錄,通訊錄里存儲著公司員工的通信方式,如郵件、電話、地址等。當員工的通信信息有變動時,員工會主動在通訊錄中更新自己的信息;當新員工入職或老員工離職時,也會有專人新增和刪除通訊錄中的員工信息。
這時,如果部門秘書給部分人發送郵件,傳達部門經理的一些工作任務安排,他(她)可以通過通訊錄來查詢這些人的郵箱信息,得到郵箱地址信息后,就可以發送郵件了。此時,這個部門秘書就相當于服務消費者,通訊錄就好比服務注冊中心,而每個員工就是各個服務的提供者。
當然,關于服務注冊與發現在實際應用中的場景可能遠比這個復雜,功能也更多,這里的例子可能不太恰當,但也能反映最基礎的服務處理過程,希望能夠幫助大家更快地理解這些概念。
了解了SOA的設計理念后,回到最初的問題,微服務與SOA到底是什么關系呢?微服務是SOA的衍生嗎?可能是因為SOA的提出早于微服務近10年,并且運用了很多年,而且微服務的設計方式確實與SOA的一些設計相似,所以很多人都認為SOA的概念應該包含微服務,或者微服務本身就是一種SOA的變體。
但事實上大多數的時候被稱為“SOA”的東西與本書中所描述的微服務有很大不同,最常見的例子就是ESB(Enterprise Service Bus,企業服務總線),這里對ESB不做介紹。總之,ESB是一個不太好的實現,完全的服務導向和過度的追求標準化帶來了更多的復雜性和技術瓶頸,也許SOA設計之初和現在的微服務目標或倡導的概念類似,但其后來在戰略上的偏執,導致了實施者過度關注于技術和標準,忽略了真正的業務價值,最終導致SOA慢慢被微服務所取代。戰略思想上的不一致也導致那些致力于敏捷的微服務擁護者完全拒絕給微服務加上SOA的標簽。
所以,筆者更傾向于把微服務當作一個獨立的新概念,用微服務來定義這種新的架構風格,以區別于SOA的設計體系。
上面介紹的是與SOA相似的架構模式,下面介紹一個完全相反的架構模式,即單體式架構。該架構模式至今仍在軟件架構的舞臺上占據著相當大的位置。下面通過分析傳統的單應用架構模式,幫助我們更清楚地了解微服務的設計意圖。