微服務架構誕生以來,在各種演講、文章、書籍上所出現的頻率之高,足以看出它對軟件架構領域帶來的巨大影響。經過這兩年的快速普及,微服務的實踐已經在越來越多的組織和企業內部得以推廣和運用。
微服務架構的演進,作為一種架構模式,微服務將復雜系統切分為數十乃至上百個小服務,每個服務負責實現一個獨立的業務邏輯。這些小服務易于被小型的軟件工程師團隊所理解和修改,并帶來了語言和框架選擇靈活性,縮短應用開發上線時間,可根據不同的工作負載和資源要求對服務進行獨立縮擴容等優勢。另一方面,當應用被拆分為多個微服務進程后,進程內的方法調用變成了了進程間的遠程調用。引入了對大量服務的連接、管理和監控的復雜性。讓我們來回顧一下微服務架構的發展過程。在出現服務網格之前,我們最開始在微服務應用程序內理服務之間的通訊邏輯,包括服務發現、熔斷、重試、超時、加密、限流等邏輯。
微服務的優點:將應用程序分解為不同的更小的服務的好處是,它改進了模塊化,使應用程序更容易理解、開發、測試,并且更能抵御體系結構的侵蝕。它還通過允許小型自治團隊開發、部署和部署來并行化開發。簡單來說,微服務架構基本符合我們拆解問題的方式 -- 把一個復雜問題拆成多個簡單的問題,這個復雜問題就是在開發軟件過程中的復雜度問題,但微服務的拆解是基于業務模塊的。
總結一下:獨立性,這里的獨立性指的是各個服務的開發、測試、部署都相互獨立。比如:我們的用戶服務就可以拆分作為一個單獨的服務,而它的開發也不用依賴于其他服務。如果我們的用戶量大,我們可以很容易的對其進行負載。敏捷性,當一個新需求出現時,特別是在一個龐大的項目系統中,你得去考慮各方的問題,兼容性,影響度等等,而使用微服務則可以省掉很多這些廢時又燒腦的環節。實現更靈活,在以前的項目開發中,基本上一個大的項目都基于同一語言的技術架構來開發,這樣的限制很大 。而使用微服務拆分后的各服務之間沒有這個限制,你只需要保證對外提供的接口是正常可用的就行。至于你是使用什么語言、什么框架通通不用關心。
未來的幾年,相信會有更多的企業將目光聚焦在如何有效地將微服務落地這個核心問題上。微服務的概念看似淺顯易懂,但實際上卻與架構演進、領域建模、持續交付及DevOps等多個維度的方法論與實踐密切相關。在一個分布式系統中,這部分邏輯比較復雜,為了為微服務應用提供一個穩定、可靠的基礎設施層,避免大家重復造輪子,并減少犯錯的可能,一般會通過對這部分負責服務通訊的邏輯進行抽象和歸納,形成一個代碼庫供各個微服務應用程序使用。“微服務的落地需要經過全面的考察和完善的試驗,并不是每個場景都適合使用微服務架構,也不是每個企業都有能力或者精力去面對這些挑戰。
最后,和大家探討一下微服務拆分的通用策略:先從整體來分析業務的特性或者進行大模塊切分,比如基礎服務模塊、社區業務模塊、分發業務模塊等。可以考慮先針對某些大模塊(而不是全部)進行切分,成功后再復用到其他模塊。遵循先少后多、先粗后細的原則,千萬不要試圖一次過拆分完成,那基本是不可能完成的任務。拆分時要考慮的因素至少包括:業務的獨立性及發展趨勢、微服務的研發維護及質量流程、團隊特點及技術因素等。
中培偉業建立了完善的服務體系,即嚴格按照ISO9001國際質量管理體系標準及咨詢服務業標準規范,建立了標準化的服務流程,對培訓、咨詢服務實施全過程質量控制,關注顧客反饋,從而使客戶的需求得以實現。據該機構相關老師介紹,機構多年來立足實際,穩定發展,每年分別舉辦微服務架構設計公開課程和企業內訓與咨詢100余場,并取得了不錯的市場反響。