微服務隨想 Intro 在如今微服務的思想和架構流行的今天,以及結合最近在公司實施的微服務化,想談談自己對微服務的理解及看法,可能並不太對,如果你覺得哪些有問題,歡迎指出,一起探討學習。 下麵我將從微服務的三個層面去探討 1. 什麼是微服務(What) 1. 為什麼要微服務(Why) 1. 微服務化 ...
微服務隨想
Intro
在如今微服務的思想和架構流行的今天,以及結合最近在公司實施的微服務化,想談談自己對微服務的理解及看法,可能並不太對,如果你覺得哪些有問題,歡迎指出,一起探討學習。
下麵我將從微服務的三個層面去探討
- 什麼是微服務(What)
- 為什麼要微服務(Why)
- 微服務化怎麼實施(How)
什麼是微服務
在介紹微服務時,首先得先理解什麼是微服務,顧名思義,微服務得從兩個方面去理解,什麼是"微"、什麼是"服務", 微 狹義來講就是體積小、著名的"2 pizza 團隊"很好的詮釋了這一解釋(2 pizza 團隊最早是亞馬遜 CEO Bezos提出來的,意思是說單個服務的設計,所有參與人從設計、開發、測試、運維所有人加起來 只需要2個披薩就夠了 )。 而所謂服務,一定要區別於系統,服務一個或者一組相對較小且獨立的功能單元,是用戶可以感知最小功能集。
微服務是一種架構風格,一個大型複雜軟體應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關註於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表著一個小的業務能力。
微服務架構風格是一種使用一套小服務來開發單個應用的方式途徑,每個服務運行在自己的進程中,並使用輕量級機制通信,通常是 HTTP REST API,這些服務基於業務能力構建,並能夠通過自動化部署機制來獨立部署,這些服務可以使用不同的編程語言實現,以及不同數據存儲技術,並保持最低限度的集中式管理。
為什麼要微服務
從系統及應用程式的角度來說,起初大部分應用都是單體應用,所有的代碼及功能都糅合在一起,隨著系統的逐漸變大變得複雜,單體應用的部署和具體的功能模塊依賴程,比較嚴重,相互影響較大,所以到後面通常會引入服務化的概念,將不同的模塊拆成不同的服務來進行解耦和降低依賴,提高部署的靈活性。首先被應用的也就是 SOA(Service Oriented Architecture) 架構模式,SOA 架構模式下多有 ESB(Enterprise Service Bus) ,而 ESB 通常與某種語言/某種技術棧是強綁定的,也就決定了 SOA 模式下的開發語言/技術框架選擇的限制。之後微服務開始出現在人們的視野之中,微服務的出現使得各個服務之間可以使用不同的技術棧,這對於使用不同語言的技術棧的開發人員來說是一個福音,從整體應用的角度來看,不需要再關註是什麼樣的語言與技術棧的實現,另外對於大多數互聯網應用來說,應用程式的彈性擴展也很重要,微服務化同樣使得彈性擴展變得方便簡單。
單體應用架構的問題
- 應用各模塊耦合嚴重,複雜性高
- 部署時間長,開發調試體驗差效率低
- 應用具體的模塊彈性伸縮比較困難
- 系統重構與技術創新困難
SOA 存在的問題
- 抽取的服務的粒度過大,系統與服務之間還有一定程度的耦合
- 對 ESB 比較依賴
- 技術棧相對固定,技術選型受限
微服務的優缺點
優點
- 各模塊耦合程度低
- 服務自治
- 按需伸縮比較簡單
- 技術棧選擇不受限,各個服務相互獨立
- 發佈部署簡單,啟動速度快
缺點
- 運維成本比較高
- 分散式環境複雜
怎麼實施微服務
- 微服務整體架構規劃,微服務的拆分
- CI/CD 建設
- 系統監控/報警
- Api網關
- 統一的身份認證/授權
- 配置中心
- 分散式調用監控
- 註冊中心/服務發現/負載均衡
Reference
- https://blog.csdn.net/tiandiwuya/article/details/78543336
- https://blog.csdn.net/wuxiaobingandbob/article/details/78642020?locationNum=1&fps=1
- https://blog.csdn.net/chszs/article/details/78515231
- https://blog.csdn.net/oschina_41740100/article/details/80630901
Contact
後續會展開介紹如果進行具體的實施
Contact me: [email protected]