微服务随想
微服務隨想
Intro
在如今微服務的思想和架構流行的今天,以及結合最近在公司實施的微服務化,想談談自己對微服務的理解及看法,可能并不太對,如果你覺得哪些有問題,歡迎指出,一起探討學習。
下面我將從微服務的三個層面去探討
什么是微服務
在介紹微服務時,首先得先理解什么是微服務,顧名思義,微服務得從兩個方面去理解,什么是"微"、什么是"服務", 微 狹義來講就是體積小、著名的"2 pizza 團隊"很好的詮釋了這一解釋(2 pizza 團隊最早是亞馬遜 CEO Bezos提出來的,意思是說單個服務的設計,所有參與人從設計、開發、測試、運維所有人加起來 只需要2個披薩就夠了 )。 而所謂服務,一定要區別于系統,服務一個或者一組相對較小且獨立的功能單元,是用戶可以感知最小功能集。
微服務是一種架構風格,一個大型復雜軟件應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關注于完成一件任務并很好地完成該任務。在所有情況下,每個任務代表著一個小的業務能力。
微服務架構風格是一種使用一套小服務來開發單個應用的方式途徑,每個服務運行在自己的進程中,并使用輕量級機制通信,通常是 HTTP REST API,這些服務基于業務能力構建,并能夠通過自動化部署機制來獨立部署,這些服務可以使用不同的編程語言實現,以及不同數據存儲技術,并保持最低限度的集中式管理。
為什么要微服務
從系統及應用程序的角度來說,起初大部分應用都是單體應用,所有的代碼及功能都糅合在一起,隨著系統的逐漸變大變得復雜,單體應用的部署和具體的功能模塊依賴程,比較嚴重,相互影響較大,所以到后面通常會引入服務化的概念,將不同的模塊拆成不同的服務來進行解耦和降低依賴,提高部署的靈活性。首先被應用的也就是 SOA(Service Oriented Architecture) 架構模式,SOA 架構模式下多有 ESB(Enterprise Service Bus) ,而 ESB 通常與某種語言/某種技術棧是強綁定的,也就決定了 SOA 模式下的開發語言/技術框架選擇的限制。之后微服務開始出現在人們的視野之中,微服務的出現使得各個服務之間可以使用不同的技術棧,這對于使用不同語言的技術棧的開發人員來說是一個福音,從整體應用的角度來看,不需要再關注是什么樣的語言與技術棧的實現,另外對于大多數互聯網應用來說,應用程序的彈性擴展也很重要,微服務化同樣使得彈性擴展變得方便簡單。
單體應用架構的問題
SOA 存在的問題
微服務的優缺點
優點
- 各模塊耦合程度低
- 服務自治
- 按需伸縮比較簡單
- 技術棧選擇不受限,各個服務相互獨立
- 發布部署簡單,啟動速度快
缺點
- 運維成本比較高
- 分布式環境復雜
怎么實施微服務
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: weihanli@outlook.com
總結
- 上一篇: 利用Jmeter测试CSRF令牌验证的W
- 下一篇: Dubbo管理控制台的安装