何謂微服務?
簡單來說,微服務架構就是將一個完整的應用從數據存儲開始垂直拆分成多個不同的服務,每個服務都能獨立部署,獨立維護,獨立擴展,服務與服務間通過RESTful API的方式互相調用。
我們為什么要采用微服務?
“讓我們的系統盡可能快地響應變化”—— Rebecca Parson
微服務的優勢:
每個服務都很簡單,只關注于一個業務功能。
每個微服務可以由不同的團隊獨立開發。
微服務是松散耦合的。
微服務可以通過不同的編程語言與工具進行開發。
微服務的缺點:
微服務應用的是分布式系統,由此會帶來固有的復雜性。開發者需要在RPC或者消息傳遞之間選擇并完成進程間通訊機制。相對于單體式應用中通過語言層級的方法或者進程調用,微服務下這種技術顯得更復雜一些。
微服務的另一個難題來自于分區的數據庫架構。微服務架構應用中,需要更新不同服務所使用的不同的數據庫。這對開發者提出了更高的要求和挑戰。
部署難題。微服務架構模式應用的改變將會波及多個服務。比如,假設你在完成一個案例,需要修改服務A、B、C,而A依賴B,B依賴C。在單體式應用中,你只需要改變相關模塊,整合變化,部署就好了。
依米觀點:
做微服務之前,需要審視一下,目前的業務場景、技術實力,是不是需要把應用拆分到“微”的粒度。優雅的架構總是和實用的架構有距離的。在沒有足夠的能力之前,應該盡量選擇更實用的架構。如果你的體量還不大,首先應該解決的是搭建好一套絕對穩定的平臺化服務,待體量逐漸長大,再去根據實際需要進行不斷發分裂。團隊也隨之變化。如果體量足夠大,飽受單體應用之苦,也應該先建設平臺化服務,建設好之后,先按照大的粒度進行拆分,逐步“微”化。