1. 程式人生 > >體系化認識微服務之一:什麼是微服務

體系化認識微服務之一:什麼是微服務

什麼是微服務

微服務作為一種架構風格,是從單體應用演化過來的。微服務真正讓大家關注源於Martin·Fowler的一篇部落格Microservices,文章對微服務定義如下:

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

翻譯過來就是說微服務是一種架構風格,這種架構風格具有一些特點:①獨立程序;②輕量級通訊機制;③圍繞業務能力進行構建;④由一組小的服務組成

微服務的利與弊

強模組化邊界 分散式系統技術複雜性
獨立部署 最終一致性
技術多樣性 運維複雜性
提高開發效率 測試複雜性

微服務與SOA

說起這兩者的異同,要從兩者的架構風格說起,兩者都是面向服務的架構,微服務是一組可獨立部署、互不影響的服務;SOA是一組共享儲存、通過企業匯流排互動的服務。

SOA由兩個主要角色構成:服務消費者和服務提供者。服務消費者通過企業匯流排(ESB)呼叫服務提供者的服務。那麼問題來了,什麼是企業匯流排呢?

企業服務匯流排(ESB)是一種整合架構風格,它允許通過公共通訊匯流排進行通訊,該通訊匯流排由提供者和消費者之間的各種點對點連線組成。簡而言之就是說消費者呼叫提供者是通過點對點的連線完成的。

SOA架構通常是這樣的:

SOA

微服務也是一種面向服務的架構:每個服務可獨立構建部署,如果某個服務發生異常,也只會影響那臺伺服器的呼叫而不會影響其他機器的服務正常提供服務。

微服務架構通常是這樣的:

微服務

通過兩者的架構可以看到,SOA的ESB可能會成為單點,並且如果一個呼叫很慢就會阻塞其他呼叫,在呼叫量很大的時候這個影響是致命的。還有一點,SOA是共享儲存的,微服務是獨立儲存。共享儲存好處當然是維護簡單,資料可重複利用,弊端是如果儲存掛了,影響的是全部服務,比如慢查就是很好的例子。而且從模組拆分的角度,不同的服務應該就是不同的儲存,服務獨立——>儲存獨立——>風險隔離。

我的公眾號開通啦,歡迎關注^_^

技術視點公眾號