在如今微服務的思想和架構流行的今天,以及結合最近在公司實施的微服務化,想談談自己對微服務的理解及看法,可能並不太對,如果你覺得哪些有問題,歡迎指出,一起**學習。
下面我將從微服務的三個層面去**
什麼是微服務(what)
為什麼要微服務(why)
微服務化怎麼實施(how)
在介紹微服務時,首先得先理解什麼是微服務,顧名思義,微服務得從兩個方面去理解,什麼是"微"、什麼是"服務", 微 狹義來講就是體積小、著名的"2 pizza 團隊"很好的詮釋了這一解釋(2 pizza 團隊最早是亞馬遜 ceo bezos提出來的,意思是說單個服務的設計,所有參與人從設計、開發、測試、運維所有人加起來 只需要2個披薩就夠了 )。 而所謂服務,一定要區別於系統,服務乙個或者一組相對較小且獨立的功能單元,是使用者可以感知最小功能集。
微服務是一種架構風格,乙個大型複雜軟體應用由乙個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關注於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表著乙個小的業務能力。
微服務架構風格是一種使用一套小服務來開發單個應用的方式途徑,每個服務執行在自己的程序中,並使用輕量級機制通訊,通常是 http rest api,這些服務基於業務能力構建,並能夠通過自動化部署機制來獨立部署,這些服務可以使用不同的程式語言實現,以及不同資料儲存技術,並保持最低限度的集中式管理。
從系統及應用程式的角度來說,起初大部分應用都是單體應用,所有的**及功能都糅合在一起,隨著系統的逐漸變大變得複雜,單體應用的部署和具體的功能模組依賴程,比較嚴重,相互影響較大,所以到後面通常會引入服務化的概念,將不同的模組拆成不同的服務來進行解耦和降低依賴,提高部署的靈活性。首先被應用的也就是 soa(service oriented architecture) 架構模式,soa 架構模式下多有 esb(enterprise service bus) ,而 esb 通常與某種語言/某種技術棧是強繫結的,也就決定了 soa 模式下的開發語言/技術框架選擇的限制。之後微服務開始出現在人們的視野之中,微服務的出現使得各個服務之間可以使用不同的技術棧,這對於使用不同語言的技術棧的開發人員來說是乙個福音,從整體應用的角度來看,不需要再關注是什麼樣的語言與技術棧的實現,另外對於大多數網際網路應用來說,應用程式的彈性擴充套件也很重要,微服務化同樣使得彈性擴充套件變得方便簡單。
應用各模組耦合嚴重,複雜性高
部署時間長,開發除錯體驗差效率低
應用具體的模組彈性伸縮比較困難
系統重構與技術創新困難
抽取的服務的粒度過大,系統與服務之間還有一定程度的耦合
對 esb 比較依賴
技術棧相對固定,技術選型受限
微服務整體架構規劃,微服務的拆分
ci/cd 建設
系統監控/報警
api閘道器
統一的身份認證/授權
配置中心
分布式呼叫監控
註冊中心/服務發現/負載均衡
後續會展開介紹如果進行具體的實施
contact me: [email protected]
微服務 微服務簡介
什麼是微服務 顧名思義,就是粒度較小的服務,不再侷限於系統與系統之間的藉口呼叫,也不侷限於某種具體的服務形式。系統中凡是可被復用的功能模組都可以被 服務化 轉變為 服務 這些服務可以對外暴露,也可能僅限於再系統內部使用。由於服務數量更多,粒度更小,因此管控難度會更大,對效能的要求也更高。微服務的好處...
微服務與微服務架構
微服務 微服務強調的是服務的大小,它關注的是某乙個點,是具體解決某乙個問題 提供落地對應服務的乙個服務應用,狹意的看,可以看作eclipse裡面的乙個個微服務工程 或者module。例如 訂單服務 支付服務 微服務架構 馬丁.福勒 martin fowler 微服務架構介紹 微服務架構是 種架構模式...
python 微服務 python微服務方案
使用python做web開發面臨的乙個最大的問題就是效能,在解決c10k問題上顯的有點吃力。有些非同步框架tornado twisted gevent 等就是為了解決效能問題。這些框架在效能上有些提公升,但是也出現了各種古怪的問題難以解決。在python3.6中,官方的非同步協程庫asyncio正式...