1. 程式人生 > >微服務:基本介紹

微服務:基本介紹

什麼是微服務?

微服務 - 也被稱為微服務架構 - 是一種架構風格,它是使一個整合了業務功能的程式成為一個鬆耦合服務的架構。微服務架構使大型的,複雜的應用程式,可以連續快速的實現和部署。另外,它也使得企業可以發展自己的技術棧體系。

微服務不是銀彈

微服務架構不是銀彈,它有幾個缺點。此外,採用這種架構的時候,你必須解決許多問題。微服務架構模式語言是一系列實現微服務架構模式的集合。 它有兩個目標:
1,模式語言使您能夠決定微服務是否一個非常適合你的應用程式。

2,模式語言使您能夠成功使用微服務架構。

從哪兒開始?

一個很好的出發點是單片架構模式,這是傳統的架構風格,也仍然是許多應用的理想選擇。然而,它也有許多侷限性和問題,因此對於大型 / 複雜的應用程式更好的選擇是微服務架構模式。

運用微服務架構模式語言

微服務架構模式語言包含了一組模式,它的價值超過了個別模式的綜合,因為它定義了模式之間的這些關係:
開創者模式 - 是刺激微服務模式產生的一種模式。例如,微服務架構模式是開創者模式語言,因為它是除了該單片式架構模式的剩餘部分。


繼承者(元件)模式 - 這是一種解決引入微服務架構模式所帶來的一系列問題的模式。例如,如果您採用微服務架構模式,必須再申請眾多的繼承者模式,包括服務發現模式和服務熔斷模式。


替代者模式- 是一種提供可替代的解決方案的模式。例如,單體應用架構和微服務架構師一種替代者模式,你可以選擇這一個,也可以選擇另一個。這些替代者模式,可以在你選擇架構模式時,提供寶貴的指導意見。當你採用一個模式產生問題時,你必須通過繼承者模式去解決它。而在解決的過程中,你必須在這些繼承者模式中遞迴選擇,直到確定你的解決方案,或者沒有可供選擇的解決方案。如果存在兩個或多個模式替代品,那麼你必須選擇一個。


讓我們來看看如何應用微服務架構模式語言來構建應用程式。在這篇文章中,我們將看看你必須做的3個關鍵性決策。在以後的文章中,我們將看看其他不是最為關鍵,卻也十分重要的影響因素。

關鍵決策

決策#1:單體架構或微服務架構?

你必須做出的第一個決定是:使用單體架構模式或微服務架構模式?如果你選擇的微服務架構模式,你必須選擇許多其他方式來處理決定所帶來的後續問題:


決策#2:如何分解應用到服務?

如果你已經決定使用微服務架構,則必須定義您的服務。有兩個主要選擇,
按業務功能分解 -定義相應的業務能力服務
由子域分解 -定義對應DDD子域名服務
這種模式產生相同的結果:一組圍繞業務概念,而不是技術概念組織的服務。

決策之三:如何保持資料的一致性和執行查詢?

微服務的一個重要特點是每個服務都有其獨立的資料庫。它的替代方案,共享資料庫模式事實上是一個很好的逆向選擇和避免問題最佳的方案。每個服務模式的資料庫帶給你一個重大的挑戰是:如何保持資料的一致性和執行查詢。您將需要使用saga模式,並經常需要實現使用查詢命令查詢職責隔離(CQRS)模式。