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 對可替代性的優化
松耦合如果做到了服務之間的松耦合,那麼修改乙個服務久不需要修改另乙個服務。使用微服務最重要的一點是,能夠獨立修改及部署單個服務而不需要修改系統其他部分。
高內聚把相關行為聚集在一起,把不相關的行為放在別處。如果你需要改變某個行為的話,最好能夠在乙個地方進行修改,然後就可以盡快地發布。如果需要在很多不同的地方做這些修改,那麼可能就需要同時發布多個微服務才能交付這個功能。在多個不同的地方進行修改會很慢,同時部署多個服務風險也很高。
限界上下文
乙個由顯示邊界限定的特定職責。
當你在思考組織內限界上下文時,不應該從共享資料角度來考慮,而應該從這些上下文能夠提供的功能來考慮。
監控
將系統拆分成更小的、細粒度的微服務會帶來很多好處。然而它也增加了生產系統的監控複雜性。
監控小的服務,然後聚合起來看整體。
多個服務,多個伺服器
你如何在多個主機上的、成千上萬行的日誌中定位錯誤的原因?如何確定乙個伺服器異常,還是乙個系統性的問題?如何在多個主機間跟蹤乙個錯誤的呼叫鏈,找出引起這個錯誤的原因?
答案是,從日誌到應用指標,集中收集和聚合盡可能多的資料到我們的手上。
微服務設計 讀書筆記(一)
微服務就是一些協同工作的小而自治的服務。微服務將單一職責原則應用到了獨立的服務上,根據業務範圍來確定服務的邊界,乙個服務專注於乙個業務範圍,避免 庫過大。一般來講,乙個微服務應該在兩周之內可以完全重構,但不能盲目追求小,乙個微服務的業務範圍越小,獨立性帶來的好處就越多,整個系統所需管理的服務就越多。...
微服務設計讀書筆記
微服務架構的優勢 1 較小的粒度 2 在解決問題的方法上能夠給予更多的選擇 相比動態庫更新,相關的依賴都要更新是乙個很大的優點。3 微服務定義為可以在2周之內改寫乙個服務,這種粒度的頻繁更新引入風險的可能性較單一系統有較大的改善 微服務設計 沒有明確邊界的時候,可以設定的粒度比較大,當服務內部的邊界...
《微服務設計》讀書筆記
待做的 學習框架 nameko double spring cloud 書 微服務的定義 一些協同工作的小而自治的服務 微服務的核心思想 1.自治 2 作為服務方,需要避免方暴露過多給消費而產生耦合,從而降低服務的自治性。要封裝好,服務方內部實現修改,不該影響到消費方。2.細粒度 1 解耦 避免系統...