微服务设计 读书笔记 一
1.1 什么是微服務
微服務就是一些協同工作的小而自治的服務。
1.1.1 專注于做好一件事
隨著新功能的增加,代碼庫會越變越大。時間久了代碼庫會非常龐大,以至于想要知道該在什么地方做修改都很困難。在一個單塊系統內,通常會創建一些抽象層或者模塊來保證代碼的內聚性,從而避免上述問題。內聚性是將相關代碼放在一起,在考慮使用微服務的時候,內聚性這一概念很重要。
微服務將這一理念應用在獨立的服務上。根據業務的邊界來確定服務的邊界,這樣久很容易確定某個功能代碼應該放在哪里。而且由于該服務專注于某個邊界之內,因此可以很好地避免由于代碼庫過大衍生出的很多相關問題。
1.1.2 自治性
一個微服務就是一個獨立的實體。它可以獨立地部署在服務器上。盡量避免把多個服務部署到同一臺機器上,盡管這種隔離性會引發一些代價,但它能夠大大簡化分布式系統的構建。
服務之間通過網絡調用進行通信,從而加強了服務之間的隔離性,避免緊耦合。
對于一個服務來說,我們需要考慮的是什么應該暴露,什么應該隱藏。如果暴露得過多,那么服務消費方會與該服務的內部實現產生耦合。服務會暴露出API,然后服務直接通過這些API進行通信。API的實現技術應該避免與消費方耦合。
1.2 主要好處
1.2.1 技術異構性
1.2.2 彈性
1.2.3 擴展
1.2.4 簡化部署
1.2.5 與組織結構相匹配
1.2.6 可組合性
1.2.7 對可替代性的優化
松耦合
如果做到了服務之間的松耦合,那么修改一個服務久不需要修改另一個服務。使用微服務最重要的一點是,能夠獨立修改及部署單個服務而不需要修改系統其他部分。
高內聚
把相關行為聚集在一起,把不相關的行為放在別處。如果你需要改變某個行為的話,最好能夠在一個地方進行修改,然后就可以盡快地發布。如果需要在很多不同的地方做這些修改,那么可能就需要同時發布多個微服務才能交付這個功能。在多個不同的地方進行修改會很慢,同時部署多個服務風險也很高。
限界上下文
一個由顯示邊界限定的特定職責。
當你在思考組織內限界上下文時,不應該從共享數據角度來考慮,而應該從這些上下文能夠提供的功能來考慮。
?
監控
將系統拆分成更小的、細粒度的微服務會帶來很多好處。然而它也增加了生產系統的監控復雜性。
監控小的服務,然后聚合起來看整體。
多個服務,多個服務器
你如何在多個主機上的、成千上萬行的日志中定位錯誤的原因?如何確定一個服務器異常,還是一個系統性的問題?如何在多個主機間跟蹤一個錯誤的調用鏈,找出引起這個錯誤的原因?
答案是,從日志到應用指標,集中收集和聚合盡可能多的數據到我們的手上。
轉載于:https://www.cnblogs.com/kxm87/p/9865890.html
總結
以上是生活随笔為你收集整理的微服务设计 读书笔记 一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET HttpGet 获取服务器文件
- 下一篇: webpack4.x最详细入门讲解