一目瞭然微服務

一目瞭然微服務

原文:https://www.oreilly.com/ideas/a-quick-and-simple-definition-of-microservices

譯者:TalkingData架構師 曾曉春

對微服務感興趣?

那這篇文章正適合您。它涵蓋了微服務的一些基本知識:微服務是什麼,微服務如何工作,以及在實現微服務之前需要牢記的事情。

微服務的特點

Sam Newman在《構建微服務》一書中提供了微服務的簡潔定義:“微服務是一起工作的小型自治服務。”

《微服務架構》一書的作者Mike Amundsen、Irakli Nadareishvili、Ronnie Mitra和Matt McLarty通過分析微服務應用程序的通用特性,為微服務的定義添加了細節:

  • 體積小

  • 消息驅動

  • 受上下文限制

  • 自主開發

  • 可獨立部署

  • 分散

  • 通過自動化流程構建和發佈

微服務應該很小

微服務應該很小。但是多小?這裡有一些指導原則。

幫助我們回答“多小”的一個重要因素,是服務如何與團隊結構保持一致。如果代碼庫太大而無法由一個小團隊管理,那麼明智的做法應該是想辦法分解代碼。

當談到小到足夠小時,從這些條件來思考:服務越小,越能夠最大化微服務架構的優點和缺點。隨著服務變得越來越小,相互依存關係的好處就會增加。但是,由於擁有越來越多的移動部件而產生的一些複雜性也同樣增加。隨著在處理這種複雜性方面做得更好,開發者可以爭取更小的服務。(來自《構建微服務》)

微服務是單系統的替代品

大型和集中式系統可能會帶來很多挑戰。微服務架構是一種可與現代開發實踐保持一致的替代辦法。

隨著我們編寫代碼添加新功能,代碼庫會不斷增加。隨著時間的推移,由於代碼庫過於龐大,可能很難定位到需要進行更改的地方。儘管力求清晰的、模塊化的代碼庫,但這些進程間的邊界往往會崩潰。與類似功能相關的代碼開始遍佈全局,讓修復bug或實現變得更加困難。

微服務將我們的服務邊界集中在業務邊界上,使得代碼在某個特定功能塊的生存位置變得明顯。通過將這項服務集中在一個明確的邊界上,我們避免了它的增長過大的誘惑,以及所有可能帶來的相關困難。(來自《構建微服務》)

微服務意味著自治

獨立性是微服務的一個重要方面,因此在考慮微服務體系結構時請記住以下幾點。

微服務需要能夠彼此獨立地進行更改,並且可以自行部署而不需要消費者進行更改。我們需要考慮我們的服務應該暴露什麼,以及他們應該允許隱藏什麼。

黃金法則:無需更改任何其他服務,即可對服務進行更改並自行部署嗎?如果答案是“否”,那麼微服務的許多優點將很難實現。(來自《構建微服務》)

服務需要有取有舍

確保你在進入微服務時保持警覺。這裡有一些需要你做出取捨的地方。

在微服務架構中,服務往往變得更簡單,但架構往往變得更加複雜。這種複雜性通常通過工具、自動化和流程進行管理。

最終,你必須接受這樣一個現實:微服務系統的控制和管理比其他架構類型更加昂貴。對於許多組織來說,因為對增加系統可變性的需要,使得這樣的成本支出是合理的。但是,如果您認為回報沒有充分超過收益,那麼這在您的組織中可能不是構建軟件的最佳方式。(來自《微服務架構》)

瞭解有關微服務的更多信息

準備進入微服務的下一步?看看這些資源。

《構建微服務》(https://www.safaribooksonline.com/library/view/building-microservices/9781491950340):全面瞭解系統架構師和管理員在構建、管理和發展微服務架構時必須考慮的主題。

《微服務架構》(https://www.safaribooksonline.com/library/view/microservice-architecture/9781491956328):瞭解如何把微服務架構風格建築系統的優勢,並從別人的經驗中學習採取最成功執行這種方法。

《生產就緒的微服務》(https://www.safaribooksonline.com/library/view/production-ready-microservices/9781491965962):瞭解如何設計穩定、可靠、可擴展、容錯、高性能、可監控、可記錄和準備應對任何災難的微服務。

事件驅動的微服務(https://www.safaribooksonline.com/library/view/event-driven-microservices/9781491944165) - 軟件開發人員和架構師轉而使用微服務來提高開發工作的敏捷性和速度。但這是否正確?本視頻提供了微服務的優點和缺點的平衡視圖。

如何快速定位微服務的陷阱(https://www.safaribooksonline.com/case-studies/microservices/how-fastly-navigates-microserv/9781491991336-video307653)- 本案例研究涵蓋了構建、測試和部署功能微服務體系結構的經驗教訓。


分享到:


相關文章: