3分钟学会如何调度运营海量Redis系统
2019獨角獸企業重金招聘Python工程師標準>>>
本文由云+社區發表
作者:馮偉源
作者:馮偉源,高級工程師,騰訊云Redis系統運維負責人。6年DBA經驗,一直從事SQL優化、實例調優、數據庫架構、海量數據庫集群運維、運營平臺建設和管理等工作。為 QQ、Qzone、QQ音樂、微云、騰訊云等業務提供數據庫服務。
導語:騰訊云Redis自2015年誕生以來,爆發式增長,為上萬家客戶提供服務。作者作為唯一的運維負責人,面對三大挑戰時如何破解?
- 元信息的一致性管理
- 萬臺設備高效運維
- 如何實現智能調度
解讀騰訊云Redis
騰訊云Redis是基于騰訊內部分布式緩存領域在QQ、音樂、Qzone、微云等業務多年的技術沉淀,為客戶打造除的一款高可用、高可靠的Redis服務平臺。其業務發展迅速,目前有上萬臺設備,QPS已達億級。
騰訊云Redis目前分別提供主從版、集群版、新一代三個版本。在使用上,基本兼容 Redis 協議,支持字符串、鏈表、集合、有序集合、哈希表等多種數據類型,能幫助客戶完成不同類型的業務場景開發。騰訊云Redis支持主從熱備,提供自動容災切換、數據備份、故障遷移、實例監控、在線擴容、數據回檔等全套的數據庫服務。搜索關注“騰訊云數據庫TencentDB"官方微信,最新最熱數據庫前沿知識和手把手實戰教程等你來約,更可在移動端一鍵管理數據庫。
運營問題
我們在運營Redis的過程中,遇到各種各樣的問題總結如下:
\1. 環境:網絡、TCP參數設置的問題;
\2. 設計:做持久化時,頁表復制造成的卡頓;
\3. 開發者:慢查詢,連接風暴,缺流控等;
\4. 最終用戶:比如電商的秒殺活動,訪問陡增導致處理能力到極限。
總的來說,是服務運行過程中,資源的需求與供給不匹配。
三大挑戰
在應對這些運營難題過程中,我們陸續地翻越三座大山:
挑戰一:元信息的一致性管理
元信息的混亂導致一些運維故障在日常運營中經常碰到?最基本的四類元信息是集群、設備、實例和配置。 我們解決這類問題的時候定3條原則。
- “全”---元信息梳理統計全;
- “準”---和現網各種信息保持一致;
- “一”---統一的入口,提供統一的API,來進行數據的讀取與修改,讓元數據的變更可以被審計。
首先對所有元信息進行梳理,提取各種元信息的公共特征,分類建模,然后抽象出模板對象的屬性與方法,定義數據結構,最后設定數據同步與消費的方式,對外提供API接口。這樣一套基本的DB-CMDB子系統就建成了。也就是數據庫層統一元信息管理系統。
設計思路上,采用通用框架,可以管理不同數據庫類型的信息,也為后面的運維自動化奠定基礎。
挑戰二:萬臺設備的作業方式
系統提供服務之初,整體運維規模還不大,很多運維工作可以通過手工解決。在客戶量爆發后,1~2個DBA是無法通過手工解決萬臺設備運營,更無法面對億級QPS性能沖擊。
為了應對規模化的運營,我們打造“作業平臺”的系統,來承載我們的運維邏輯。
- 平臺化---原子操作,工具托管在平臺上
- 流程化---工具串成流程,流程化,可復用
- 可視化---各類運維操作可視化,簡單明了
首先將腳本編輯作為工具,托管在平臺上。這種工具的原則是原子操作,只有失敗與成功兩種狀態。工具串起來成為流程,每個工具可以被多個流程復用,這樣大部分運維操作,包括上下架機器,Redis的遷移,擴縮容都可以通過流程來實施。同時各類操作均通過可視化來展示,簡單明了。
目前騰訊云Redis作業平臺已建成數百種場景化的工作流程,日調用次數達上千次,覆蓋大部分的運維場景,變更導致的事故減少,服務更為穩定可靠,場景化運維工作效率提升300%。通過平臺化、可視化、流程化的“作業平臺”,整個團隊的工作協同,積累,傳承做得更好。
挑戰三:如何實現智能調度
手工觸發的運維流程,只能算是半自動化。我們該如何把整體的運營工作打造成全自動化呢?
- 自動化調度系統
- 決策系統
自動化調度系統:對于按事件和時間調度系統異常時觸發的告警,第一是按時間調度,比如每周三下午3點重啟一個服務,通過時間來觸發。第二是按事件調度,我們把每一種告警,都作為一種事件,注冊到調度系統中。調度系統捕獲到事件后,可以調用作業平臺的任務或者流程去完成一些工作,這就形成一個運維的閉環。
決策系統:在處理一個事情之前,我們還需要獲取各種信息,如何根據信息做決策?一個決策系統,先發起決策請求,過程中可能會涉及到一些決策樹,或者AI決策等,根據決策的結果,再確定調哪些作業流程,或者是否調作業流程。
總結運營之道
運維成熟度的衡量
運維成熟度在騰訊云的成熟度衡量:從比較原始的方式,到實現一些標準的工具。再到可視化、流程化、平臺化,以及實現能基于時間與事件觸發的自動調度平臺,實現全自動化的運維閉環。智能化解讀,通過機器學習,深度學習的方法能幫助我們更好地做一些決策,比如說數據庫自動調參,智能分析實現數據的冷熱沉降;最后,通過業務畫像,數據分析,成本優化等為業務帶來更多的價值。
總結:技術支持業務,技術推動業務,技術引領業務。 搜索關注“騰訊云數據庫TencentDB"官方微信,最新最熱數據庫前沿知識和手把手實戰教程等你來約,更可在移動端一鍵管理數據庫。
云時代下對DBA的全面要求
云時代下,DBA應該對自身能力提出更高更全面的要求。我們不但要保證系統高效穩定,協助好使用者,還要在產品打造方向、架構設計的細節、組件的源碼,社區的跟進甚至是引領上進行沉淀,并建立個人影響力。
我們既是運維,也是開發,也是產品。這也是云時代下,服務化、DO合一的趨勢!
此文已由騰訊云+社區在各渠道發布
獲取更多新鮮技術干貨,可以關注我們騰訊云技術社區-云加社區官方號及知乎機構號
轉載于:https://my.oschina.net/qcloudcommunity/blog/3015417
總結
以上是生活随笔為你收集整理的3分钟学会如何调度运营海量Redis系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 整理JAVA知识点--基础篇,能力有限不
- 下一篇: sping中@import