最近團隊在做乙個集中化配置管理系統,根據運維團隊的需求,要考慮應用灰度發布時配置部分變更的可能,需求是首先變更某個機房的某台伺服器上的配置,進一步地,修改該機房所有伺服器的配置,最後修改全域性伺服器的配置。這樣的需求和通常理解的灰度發布有一定區別,暫且叫他灰度配置。本文主要理解下兩種灰度的差異,並且簡要說明兩種灰度的實現方案。集中化配置管理系統:指的是指將原本散亂存放在各個伺服器上的配置(通常的配置檔案),集中在統一的平台進行管理,配置管理員可以在該平台上對配置進行增刪改查,而每乙個需要配置的節點在啟動時主動向平台獲取。進一步地,在配置發生變化時,主動通知到所有使用該配置的節點,以達到動態配置變更的目的。現在大的網際網路公司都有自己的一套集中化配置管理系統,比如阿里巴巴的diamond系統,apache的zookeeper等。
灰度發布
應用的灰度發布指的是,新系統發布時不直接廢止舊的系統,而是有一段新舊系統的共存時間。通過逐漸增加新系統承擔的負載權重,直到完全替代舊的系統。這樣的好處在於避免因為新系統存在功能異常或者設計上的不合理導致的服務完全中斷,通過漸進式觀測新系統替代舊系統的效果,達到平緩公升級的目的。理解來說,就是在一段時間內,通過流量源頭的開關控制,動態調整新舊系統承擔的負載。
灰度配置
乙個系統的伺服器集群中,不同機器使用不同的配置,每一次,調整一批機器的配置,最終達到全系統配置統一。可以這麼理解,相同系統的不同服務節點使用不同的配置,叫他灰度配置。
差異灰度發布和灰度配置概念完全不同,灰度發布的過程像是現在社會的稅收制度,每個人拿一點錢出來貢獻黨國,大家都是一樣的標準,一視同仁。恢復配置更像是建國初期的打地主,圈出社會屬性帶有地主的一群人,把他們財產充公,特點是只是針對一部分人,但每乙個被選中的人都要一分不剩。
灰度發布設計
關於灰度發布業界已經有比較成熟的實現,在需要灰度系統系統的前置流量入口系統上增加乙個選擇功能,先做一次發布。然後需要灰度發布的下游系統,將新系統部署上去,和老系統共存。灰度發布過程中,通過修改乙個權重配置並推送到控制流量的前置入口系統上,將部分流量引向新的系統,並觀察新系統的表現。逐漸地,繼續修改權重配置,增加新系統承擔的流程,直到新系統完全承擔所有流量,下線老系統。
灰度配置設計
關於灰度配置,有乙個種設計是,將配置做乙個層級的劃分。一共分為6層,包括:全域性配置,全域性灰度配置,機房配置,機房灰度配置,節點配置,節點灰度配置。優先順序是,節點灰度配置》節點配置》機房灰度配置》機房配置》全域性灰度配置》全域性配置。也即是說對業務來說的乙個配置,在底層儲存實際上是6個配置。對於乙個配置的需求者,每次啟動獲取6個配置的內容,然後根據優先順序選擇自己應該載入的配置。進一步地,他需要關注6個配置的變更情況,一旦當前配置被刪除,需要重新根據優先順序選擇自己應該載入的配置內容。
灰度配置方案存在的缺點
配置的設計過於複雜,6個配置很可能讓運維人員陷入混亂。
配置級別不靈活,比如新增乙個城市級別的配置就足夠讓所有應用跳腳;又在比如,因為伺服器可能存在上線,下線或者遷移的情況,一次機房級別的配置變更,如何確認變更的伺服器列表是否正確。
灰度配置方案缺陷分析
以上2個缺點,核心的問題在於乙個配置管理系統做了一些可能不應該由他做的事情,比如負責節點的定義,機房的定義,灰度的定義等等,導致了設計上覆雜和維護上的難度。當然,業務方有這樣的需求,自然是要想方設法去做滿足,以下提供一種新的設計方案,可以解決或者部分解決以上2個問題。
新方案及執行時狀態描述
去掉6個級別的配置,改成2個級別,即全域性配置和臨時配置,優先順序為臨時配置》全域性配置。
增加機器分組的功能,該功能只在灰度發布時候臨時使用。
新方案的優劣分析
該方案將原來多級別的配置設計改成全域性和臨時2個級別,而且臨時配置只在灰度發布時使用,設計上簡單可控。
群組功能足夠靈活,將機器分組屬性的判斷抽象出來(重點),在滿足業務灰度配置功能的前提下,保持自身的邏輯足夠簡單。
灰度發布和AB Test
二 ab test 三 實現方案 四 第三方框架 五 參考資料 1.簡介 灰度發布,是指在黑與白之間,能夠平滑過渡的一種發布方式。通過不同策略對使用者進行分流,不同的使用者組使用不同的應用版本。2.優點 網際網路服務變動頻繁,發布周期短。速度與質量總是難以雙全。灰度發布有以下優點 3.缺點1.簡介 ...
Apollo的灰度發布
灰度發布 定義 灰度發布是指在黑與白之間,能夠平滑過渡的一種發布方式。在其上可以進行a b testing,即讓一部分使用者繼續用 產品特性a,一部分使用者開始用產品特性b,如果使用者對b沒有什麼反對意見,那麼逐步擴大範圍,把所有使用者都遷 移到b上面來。apollo實現的功能 1.對於一些對程式有...
灰度發布(上線)和AB Test
一 灰度發布 1.簡介 灰度發布,是指在黑與白之間,能夠平滑過渡的一種發布方式。通過不同策略對使用者進行分流,不同的使用者組使用不同的應用版本。2.優點 網際網路服務變動頻繁,發布周期短。速度與質量總是難以雙全。灰度發布有以下優點 降低發布風險,減少影響範圍 可以灰度測試帳號,降低測試依賴,減少線下...