「架構」對於微服務設計原則的思考

適合的讀者:中級程序員

前言

微服務是一種系統架構的風格,為了解決大型複雜系統的開發和維護而產生。通常是將系統根據功能進行縱向劃分出多個微服務,這種風格給系統帶來很好的擴展性,但微服務也有陷阱,如果粒度劃分的太細,則微服務之間的通信所帶來的性能消耗也是極恐怖的。

以上是對微服務一個大致的介紹,其實每個人對微服務都有自己的理解,這裡就分享一下我對微服務設計原則的思考。

單一職責

只應關注整個系統功能中單獨、有界限的一部分;

服務自治

每個微服務應具備獨立的業務能力、依賴與運行環境;

服務是獨立的業務單元,應該與其他服務高度解耦;

每個微服務從開發、測試、構建、部署,都應當可以獨立運行,而不應該依賴其他的服務;

不會與其他服務共享數據庫表;

輕量級通信機制

微服務之間應該通過輕量級的通信機制進行交互;

通信機制應具備兩點要求:首先是體量較輕;其次是是跨語言、跨平臺的;

微服務粒度

必須在微服務的設計階段,就確定其邊界;

微服務之間應相對獨立並保持松耦合;

擁有最少量的數據庫表;

在特殊情況下,可以權衡微服務間通信的性能開銷,而相應的加大微服務的粒度;

無狀態化(易於橫向擴展)

服務不存儲業務上下文信息;

冗餘部署多個服務,完全對等;

易於彈性擴容、縮容服務;

總結

相信大家在微服務實踐中,也有自己的理解和思考,如果大家有好的想法可以一起來評論區探討。

因為自己的表達能力有限,以上內容也借鑑了很多博客,如有冒犯,敬請原諒。


分享到:


相關文章: