天天看點

微服務架構了解

參考連結:https://baijiahao.baidu.com/s?id=1609470628776404706&wfr=spider&for=pc

https://blog.csdn.net/varyall/article/details/78905332

https://www.cnblogs.com/wintersun/p/6219259.html

什麼是微服務?

微服務,又叫微服務架構,是一種軟體架構方式。它将應用建構成一系列按業務領域劃分子產品的、小的自治服務。

在微服務架構中,每個服務都是自我包含的,并且實作了單一的業務功能。

微服務架構

● 來自不同裝置的不同客戶,會嘗試使用不用的服務,比如搜尋、建構、配置和其他的管理功能。

● 基于服務的領域和功能,這些服務被分離了,并且被配置設定給了單獨的微服務。

● 這些微服務有它們自己的負載均衡器、專有的執行環境,同時還能在它們自己的資料庫中擷取資料。

● 微服務間彼此的通信是通過一個無狀态的伺服器進行的,這個伺服器要麼是REST的,要麼就是一個消息總線。

● 借助“服務發現”,微服務可以知道它們通信的路徑,并發揮工作能力,比如自動化、監控等。

● 這些由微服務執行的功能通過API網關傳達給了客戶。

● 所有内部節點都被連接配接到了API網關,是以,所有連接配接到API網關的使用者都會自動連接配接到這個完整的系統。

微服務的特點

● 解耦:同一系統内的服務大部分可以被解耦。是以應用,作為一個整體,可以輕易地被建構、修改和擴充。

● 元件化:微服務可以被看成互相獨立的元件,這些元件可以被輕易地替換和更新。

● 業務能力:微服務很小,它們可以專注于某種單一的能力

● 自治:開發者和團隊可以獨立地工作,提高開發速度。

● 持續傳遞:允許持續釋出軟體新版本,通過系統化的自動手段來建立、測試和準許新版本。

● 職責明确:微服務不把應用看成一個又一個的項目。相反,它們把應用當成了自己需要負責的項目。

● 去中心化管理:關注于使用正确的工具來完成正确的工作。這也就是說,沒有标準化的方式或者技術模式。開發者們有權選擇最好的工具來解決問題。

● 靈活性:微服務支援靈活開發。任何新功能都可以被快速開發或丢棄。

微服務架構的優勢

● 獨立開發:基于各個微服務所獨有的功能,它們可以被輕易開發出來。

● 獨立部署:基于它們所提供的服務,它們可以被獨立地部署到應用中。

● 錯誤隔離:即便其中某個服務發生了故障,整個系統還可以繼續工作。

● 混合技術棧:可以使用不同的語言和技術來為同一個應用建構不同的服務。

● 按粒度擴充:可以根據需求擴充某一個元件,不需要将所有元件全部擴充。

微服務的缺點

● 單個微服務代碼量小,易修改和維護。但是,系統複雜度的總量是不變的,每個服務代碼少了,但服務的個數肯定就多了。就跟拼圖遊戲一樣,切的越碎,越難拼出整幅圖。一個系統被拆分成零碎的微服務,最後要內建為一個完整的系統,其複雜度肯定比大塊的功能內建要高很多。

● 單個微服務資料獨立,可獨立部署和運作。雖然微服務本身是可以獨立部署和運作的,但仍然避免不了業務上的你來我往,這就涉及到要對外通信,當微服務的數量達到一定量級的時候,如何提供一個高效的叢集通信機制成為一個問題。

● 單個微服務擁有自己的程序,程序本身就可以動态的啟停,為無縫更新的打好了基礎,但誰來啟動和停止程序,什麼時機,選擇在哪台裝置上做這件事情才是無縫更新的關鍵。這個能力并不是微服務本身提供的,而是需要背後強大的版本管理和部署能力。

● 多個相同的微服務可以做負載均衡,提高性能和可靠性。正是因為相同微服務可以有多個不同執行個體,讓服務按需動态伸縮成為可能,在高峰期可以啟動更多的相同的微服務執行個體為更多使用者服務,以此提高響應速度。同時這種機制也提供了高可靠性,在某個微服務故障後,其他相同的微服務可以接替其工作,對外表現為某個裝置故障後業務不中斷。同樣的道理,微服務本身是不會去關心系統負載的,那麼什麼時候應該啟動更多的微服務,多個微服務的流量應該如何排程和分發,這背後也有一套複雜的負載監控和均衡的系統在起作用。

微服務可以獨立部署和對外提供服務,微服務的業務上線和下線是動态的,當一個新的微服務上線時,使用者是如何通路到這種新的服務?這就需要有一個統一的入口,新的服務可以動态的注冊到這個入口上,使用者每次通路時可以從這個入口拿到系統所有服務的通路位址。這個統一的系統入口并不是微服務本身的一部分,是以這種能力需要系統單獨提供。

●還有一些企業級關注的系統問題,比如,安全政策如何集中管理?系統故障如何快速審計和跟蹤到具體服務?整個系統狀态如何監控?服務之間的依賴關系如何管理?等等這些問題都不是單個微服務考慮的範疇,而需要有一個系統性的考慮和設計,讓每個微服務都能夠按照系統性的要求和限制提供對應的安全性,可靠性,可維護性的能力。

也看了好多關于微服務的介紹,我的了解的就是将整體功能化整為零。每個子產品單一的功能比較單一,多個子產品進行組合。如果說單體架構是一個功能齊全的瑞士軍刀,那麼微服務就是一堆功能單一的小工具。靈活度以及生存能力提高了,但需要有一個工具對這群工具進行集中管理(工具箱)。

SOA架構和微服務架構差別

https://blog.csdn.net/zpoison/article/details/80729052

繼續閱讀