自2017年起,vivo的机器规模和服务数量都有显著增长,这可以从图表中看出。机器规模大约增长了五倍左右,服务数量也基本上增长了十几倍,其时间跨度为从2017年至2022年。
在规模增长的情况下,挑战和复杂度肯定随之上升,在vivo比较典型的挑战主要分为变更挑战和故障挑战。
变更中还是存在着或多或少的手工变更场景;
我们的单次的发布时间是比较长的;
存在很多的业务大量迁移的场景;
谷歌SRE有这样一个概念:70%的故障是由变更引起的。在vivo也存在这种情况,变更对线上稳定性会有很大的影响。
在此挑战下,我们分为了可用性能力和可用性阶段两个维度去建设,以此保障业务的稳定性。
我们的可用性能力建设是基于全周期故障管理开展的,涵盖故障发生、发现、响应、恢复、复盘及预防措施。从故障发生到恢复的时间,称为MTTR;从故障的恢复到发生,从稳定到不稳定,称为MTTF;故障发生的间隔时间,称为MTBF,总计3个指标。
故障管理无非就是这4点:
主要从业务可用性方面考虑,需要关注故障的发生频率以及对业务的影响时间。所以,减少故障发生频次、快速定位故障发生、缩短故障持续时间、实现故障快速治愈,就是我们整个高可用能力建设的大体思路。下面从我们已落地的措施跟大家介绍:
首先,要实现故障预防,首先要了解故障为什么发生,可以从服务视角和全链路视角来看。
1)服务视角
一个服务,无非就是有请求的输入,正常来说有相应的输出就可以。在实际情况下,有很多方面会影响服务的正确响应。在一些经典场景中,已经总结出了影响因素
2)全链路视角
从全链路的稳定性来看:上下游的依赖、容量不足和服务配置异常等,都是影响稳定性的重要因素。
从服务和全链路两个角度分析故障因素之后,故障预防建设就有了相应的思路:
前面講了整體的分析和建設思路,實際上vivo是怎麼做的呢?
我們基於全鏈路做了建設保障,整個鏈路從接入層、業務邏輯層、中間件層、存儲層、基礎設施層進行了建設:
1)單元化:減少跨機房之間的服務調用,避免單機房的故障影響到所有機房服務;
2)多入口:之前很多業務只有單一存取層入口,建置IDC和公有雲的多入口能力之後,單一入口異常對服務整體接取的影響就會變小;
3)過載保護:當業務突增容量的時候,接入層服務會根據設定能夠主動拒絕部分突發請求,防止過高的請求流量把後面的服務打垮;
4)熔斷降級:對依賴服務做好壟斷降級,可以屏蔽異常服務帶來的影響,避免雪崩效應。
我們建立了基於全連結的故障發現能力,目到故障主動發現率能達到90%,這其中包含客戶端監控、服務端監控和基礎監控:
1)客戶端監控:自建撥測系統,透過旁路的模擬使用者存取方式,監控各服務的可用性情況;
##2)服務端監控:包括網域監控、日誌監控和服務之間的呼叫監控,依照監控的實作方式主要是metrics/logs/trace;##3)基礎監控:監控主機的硬體資源使用情況,主要是metrics方式。
6、故障處理
#主要包含故障分析和故障處理。
#故障分析:和監控系統連動,支援基礎服務故障分析、域名可用性分析等;7、故障複盤
#故障複盤在整個高可用建設週期裡面是非常重要的一環。
我們透過基於業務的SLA分級,有的放矢地去保證業務的穩定性,並做好業務的每一個故障記錄,改進和驗證能力建設:
1)業務分級:運維資源非常有限,保證保障所有業務有相同的SLA,因此分級保障是非常有必要的,我們基於業務的口碑、營收,分為核心、重要、一般、其它四個業務級別,以此指導投入到各業務的運維人力和保障力度;
2)故障記錄:提高複盤效率,同時追蹤線上業務故障做後續分析,以此指導業務進行最佳化;
3)故障改進:基於混沌工程做後向驗證,判斷改善措施是否有落實生效。
這是我們在故障複盤上的實踐,我們也將這些能力和實踐落地到了平台,透過平台去管理故障複盤工作。
8、容量管理
線上故障很多都是容量問題導致的,容量資源到位後,可用性也能得到一定的保障,在這方面,我們主要提升了兩方面的能力:資源彈性伸縮能力、資源交付運營管理能力。
##
Q1:在可用性建置落地的過程中,遇到的最大困難是什麼?
A1:第一點是底層技術能力的建造規範,這些規範如果不准守會導致業務可用性結果存在很大的不確定性,所以要對團隊制定一定的規範,同時也要有一定的守底機制;
第二點是上層認可,每個業務在不同的階段訴求是不一樣的,穩定性做得不好,會影響業務、口碑和營收,獲得上層的認可後,可用性建設也更容易推動。
Q2:請問貴司在CMDB落地過程中,除了關聯開發負責人、主機等信息,在實際過程中還關聯過哪些信息?例如是否關聯中間件的資訊?
A2:我們很多系統目前都是以CMDB為底座的,不只是運維系統,很多系統都是基於CMDB去搭建的,中間件服務也會和CMDB做關聯建設,例如微服務裡面的dubbo,也是基於CMDB去做服務發現與治理。
講師介紹
週甲黎現在是vivo的維運總監,負責vivo網路業務的營運與維護。這位曾經在百度和騰訊工作過的人,擁有客戶端、國際化和大數據演算法等離線業務運維的經驗。加入vivo後,我主導了業務高可用性的建設,將業務的可用性提升至99.99%的水平。
以上是業務指數級成長,可用性建置也可以如此穩定?的詳細內容。更多資訊請關注PHP中文網其他相關文章!