如何借助配置中心ACM加速企業IT服務快速叠代
在5月29日召開的第二屆研發效能嘉年華中,雲效邀請了阿裏雲產品團隊的伏羿和來自阿裏巴巴中間件技術部的彥林帶來了“如何借助配置中心ACM加速企業IT服務快速叠代”的主題分享。 分別對配置中心ACM和ACM技術進行了講解,並且對ACM的主要應用場景進行了介紹,並進行了Demo環節。
精彩視頻請點擊
PPT下載請點擊
以下為精彩內容整理:
配置中心基本形態介紹
有了配置中心以後,用戶或者管理員不需要再登錄到配置中心或者配置中心下面的操作系統去修改文件。取而代之的是到配置中心的平臺上去修改對應的配置,那麽配置會對後面不同的應用監聽到,當配置或者應用啟動要去獲得配置的時候,通過配置中心和應用的交互來完成任務的分發。通過這種方式極大的提高了修改配置的這種效率、簡化了流程。
ACM簡介
應用配置管理(Application Configuration Management,簡稱 ACM),ACM是由阿裏中間件配置中心工具Diamond延伸出來的,在阿裏內部為被使用最廣泛的中間件,於2017年10月正式成為阿裏雲產品。
ACM 來自於阿裏配置中心管理工具Diamond,那麽Diamond在阿裏內部到底是什麽情況呢?主要是幾點,第一點Diamond可能是阿裏內部應用最廣泛的中間介,覆蓋量大概是80%,主要是因為他使用場景是非常多的。作為一個配置中心工具,在阿裏內部有極好的性能保證,對內承諾的SLA是保證在1秒以內,這個對很多上層的業務提供了能力的保證。當機房發生故障的時候,通過配置中心去推配置能保證很多的工作負載能在1秒鐘之內就能完成遷移。還有很多其他各種各樣的場景,比如說通過非常方便的運維能力能幫助集團的很多其他業務去做類似於限流降級。還有去做一些算法的場景,還有去做多環境管理,應用場景非常多,所以說這個是目前配置中心管理在阿裏內部的一個使用現狀。
ACM 技術詳解
配置中心基本功能
有了配置中心以後用戶不需要登陸到機器上去改配置文件,取而代之的是他到配置的管理控制臺上去發布一個配置,相應的配置會寫到配置中心的服務器上,服務中心會把不同的配置推送到下面的應用上去。所以沈澱下來三個基本功能,第一個是發布配置,第二個是獲取配置,第三個是動態配置的變化監聽。
基礎架構
ACM的服務端主要由三部分組成,第一個是地址服務器,提供ACM (Diamond)服務發現功能,實現了集群擴容、下線等運維工作對於應用方的透明。第二個是ACM(diamond)-server組件,是ACM服務的核心。該組件通過Http協議向應用方提供配置的持久化管理、動態配置推送服務。實現上,ACM(diamond)-server組件是一個Web服務集群,集群節點間通過特定機制實現數據變更的增量同步,是無中心化的結構。第三個是Mysql存儲,是ACM(Diamond)服務持久化配置管理的基礎。在淘寶生產環境中,使用一主兩備的部署方式保障數據的安全。
基於Cache的配置發布、獲取原理
ACM (Diamond) 的持久化配置保存在mysql中,額外的服務端每個節點都以本地磁盤文件的形式保存了全量的配置數據作為cache。引入服務端配置數據的緩存文件後,一次配置數據的讀取請求,其實就是一次靜態文件的Http請求。借助0拷貝的優化,減少了配置數據在應用態和內核態之間無用的內存拷貝,大大提升了數據傳輸效率。
引入cache機制後,ACM (Diamond)在實現上可以被定為一個分布式的緩存系統。在CAP方面,ACM (Diamond)選擇犧牲數據的強一致,提供了最終一致性;保證了系統的可用性和分區容忍性。通過實踐也證明了,提供最終一致性的配置並發讀寫,可以滿足幾乎所有的配置中心應用場景。
配置監聽
配置監聽需要達到的效果跟發布和獲取有點不一樣,一個配置發生變化了,怎麽通過一個類似消息的方式把變化推送到客戶端,客戶端能及時知道變化了,同時內部采取一些相應的動作。我們做的是一種類似於長輪詢的方式的方式去做,客戶端會定期的在發起監聽的這個配置的時候會發起一個30秒的長連接,這個長連接會帶到他所需要配置,如果在這30秒裏面沒有配置發生變化的時候,那麽30秒內就返回一個空值,在接下來的下一個30秒會再發起一個連接。那麽在這30秒內如果是發現了任何的變化的時候,服務端會把發生變化的配置及時的通過長連接,然後連接會返回這個客戶端,客戶端就可以拿到這個變化值。這種推拉結合的策略,做到了在長連接和短連接之間的平衡,實現了讓服務端不用太關註連接的管理,效果上又獲得了類似TCP長連接的信息推送的實時性。
ACM主要應用場景
傳統的配置文件無法很好的解決分布式系統的配置管理訴求,雖然ACM是個工具,但是具有大能量,因為能通過配置中心本身延伸出特別多的場景。對於配置安全管理、發布環境管理、程序包發布管理、業務場景動態推送、動態算法推送等方面ACM都可以很好的解決對應的需求。
場景1 微服務應用架構下的配置管理
在傳統架構的應用發布過程中,修改一個應用配置就需要將整個應用重新打包發布,整個過程非常繁瑣,且容易出錯。在基於 ACM 的微服務場景下,應用的重要配置信息被發布到 ACM 中。新的配置發布並不依賴配置打包。在新版本的配置發布後,所有應用立即生效,如圖所示。
采用 ACM 作為配置中心為微服務帶來的好處是,所有配置中心化,在應用眾多的情況下配置管理變得更加方便。所有配置不依賴版本發布,使得配置變更更加靈活。ACM 天生支持灰度發布和回滾,使得配置的變更發布在微服務架構下變得更加安全。
場景2 分布式架構下的服務治理下的服務治理
怎麽防止因為性能過載而導致的雪崩效應,一定是要做些動態的流控的。傳統方法是去改配置文件,有了配置中心以後可以把相應的配置的變更也是呈現在配置中心裏,那麽當流控發生變化的時候只需要在配置中心裏面改流控的閾值,閾值會動態的推到下面所有訂購閾值的客戶端,那麽這樣就會做到一個相應的流控。
采用ACM為分布式架構下的服務治理帶來的好處是,良好的性能,通過采用配置推送的方式來監聽服務治理信息,對性能幾乎無影響。相關的服務治理信息可以秒級推送到,響應時間迅速。當限流降級以後還可以通過秒級配置回滾來恢復狀態。
場景3 應用業務場景動態推送
現在的電商總會有一些的運營活動,比如說六一兒童節就會在相應的時間段推一些和小朋友相關的產品。最常規的方法大家馬上會想到的可能是做一個新的發布,到那個時間點推一批應用上去,這樣應用程序就會相應的變更。但是用了配置中心以後,這一過程會得到非常大的簡化。具體的就是把對應的場景寫到配置中心裏,在服務端展示的業務代碼裏面,其實是訂閱配置中心裏一段的代碼,代碼如果需要根據場景發生變化的時候把這個代碼在配置中心進行一個變更,所有的業務代碼會及時的推送到服務器中,那麽對應的場景就會發生變更。通過這種方式大大降低了發布的頻次提高了業務的敏捷性。
場景4 大數據實時計算算法調整
這是業界做監控非常典型的一個例子,我們在做性能監控的時候,會有操作系統和應用的數據通過消息對進到流計算裏做一些匯總。監控的時候實時報警怎麽做?在做計算的時候分布式節點很多,當報警的閾值發生變更的時候是需要通知到所有的節點的。在這塊阿裏也是通過配置中心去做的,應用計算參數動態配置,動態生效,生效時間塊,性能影響低。
場景5 企業級互聯網架構下的異地多活場景
在異地多活裏面有很多場景會用到ACM,這裏只講一個簡單的例子。在阿裏巴巴內部,容災多活架構的核心算法,ID分片和對應的的路由規則均采用ACM來動態推送。其中,相應的客戶端和服務端,如RPC,MQ,DB都植入了路由路徑。當容災演練或者真實災難發生時,管理員只需要動態的推送規則,相應的規則會影響到所有架構組件。使得基礎架構和容災邏輯解耦,具體的路由邏輯由容災規則切換決定。生效快,理論上容災的切換規則可以秒級推送到十萬級別機器。
Demo
在對用戶進行用戶中心改造的時候發現用戶有兩點需求,第一點是從運維效率去考慮,將配置變更從之前的幾個小時的級別變成幾分鐘到幾秒的級別,帶來了效率的極大提升,運維成本的大幅下降。第二點是安全的訴求。
為什麽用了配置中心以後它的代碼裏面就不需要出現這些敏感信息了?
使用配置中心之後把這些業務的數據全部抽離出來,放到配置中心裏,發布之後所有的這些鏡像都是一樣的,當需要配置變更的時候只需要到控制臺去修改發布即可。
在ACM上把發布環節跳過的話,怎麽保證配置能快速回滾,怎麽能記錄歷史發布記錄?
ACM在這方面做了一個歷史版本的特性,當用戶需要改錯的時候,可以去查之前發布的歷史版本,找到對應的版本點進去立即回滾就可以回到之前的版本。
我們ACM產品目前預計會長期免費,所以歡迎大家去使用。
原文鏈接
如何借助配置中心ACM加速企業IT服務快速叠代