微服務化的不同階段kuberneter的不同玩法
微服務化的必要性
一個產品的發展,通常可分為冷啟動階段、高速增長階段和成熟階段。產品冷啟動階段,需求是以最簡單的架構驗證業務。以網易考拉海購(以下簡稱“考拉”)為例,最初的架構設計目標就是快速啟動,驗證產品方向,該架構包括在線、緩存、線下和管理服務四個方面,即一般電商平臺加上跨境電商必備的進銷存系統,采用了Oracle數據庫、OpenStack管理的虛擬機(VM),並沒有諸如高並發之類的考慮。
產品高速增長階段,業務規模逐漸擴大,產品復雜度也隨著增加,企業需要解決快速叠代、高可靠和高可用等問題,一個自然的選擇是服務化的拆分,把一個單體架構拆分成一些較小的模塊,並遵循康威定律,用5-9個小團隊來適應架構的變化。仍以考拉為例,考拉在高速增長階段也慢慢演化出各種新的模塊,比如單獨的支付模塊、貨倉模塊、第三方商家模塊、推送模塊等,並基於Dubbo框架打造服務發現功能來支持各模塊之間的相互調用。
服務化主要解決了變更的問題。在整個架構演進的過程中,各個模塊都面臨爆炸性的增長,比如海淘、自營、第三方商家的供應鏈,Web、APP、H5的呈現,限時購、秒殺、預售的活動頁,以及倉庫與物流系統、支付系統的對接等,緊耦合則牽一發而動全身,工程臃腫,影響叠代速度,分別獨立上線更有利於適應業務發展的需求。考拉在高速增長階段首先按照主頁、活動頁、優惠券、支付等維度縱向拆分,之後又不斷演進成為100多個相互關聯的模塊,變更頻率由每天2次增長到每天1000多次,產品質量提升52%。
容器化的優勢與挑戰
拆分成大量小模塊之後,虛擬機與服務化架構的配合就出現了很多新的挑戰,於是有了容器化的需求。
劉超解釋說,拆分之前首先要解決“合”的問題,即需要保證功能還是原來的功能,代碼質量還是原來的代碼質量,不會引入新的bug。他認為,微服務化需要從一
微服務化的不同階段kuberneter的不同玩法