架構

會員服務在高可用架構的實戰探索

概述
很多互聯網公司在發展過程中大多出現過多次機房網絡故障的情形,如果發生故障,一般需要動用整個IT部門的人力進行流量切換和客訴處理。為了避免此類情形的發生,公司計劃進行服務的高可用建設。會員部門持續跟進公司網絡基礎設施建設,和網絡等基礎服務部門一起,實現服務的高可用。目前已經實現了同一Region的互備,這里分享一下會員服務的高可用建設的實戰和探索。

對于網絡、機房、硬件服務器之類的故障,一般采取多備份和繞路回避的策略,將流量從出故障設施切換到正常的集群中,將故障服務下線,待服務恢復后再切換回來??傮w來說,須要求多副本部署、實時故障檢測和服務快速切換。目前會員已經實現從最上層的DNS服務到底層的數據庫的自動切換。

▌高可用的方案

網絡層多區域,多出口,出口有互備和切換的能力根據目前的CDN結構,將地域劃分為北方,華中,華南,海外四個區域,每個區域支持主流運營商,保證流量均衡
應用層多機房部署,相互獨立到少保證兩個機房互備,實現基礎架構兩地三中心的戰略規劃
儲存層多實例,可以指定切換方向Mysql/Redis都可以自動將故障的實例下線
消息層統一使用RMQRMQ支持高可用,可能自動備切,將amq替換為rmq
監控層監控DNS,應用,數據庫等實例,進行數據修復提供監控功能,監控結點覆蓋數據庫和網絡層,異常時,報警和切換。提供數據處理工具。

▌升級網絡架構

1.運營商出口的互備

系統網絡部門研發了域名,LB的運維管理平臺,支持故障監測,業務異常時切換到備用資源,變更配置時進行通知。會員在使用過程中,提出了很多優化需求,如展示IP的地域和運營商信息,提升用戶體驗,目前部署了三套獨立的出口IP,相互之間可以在網絡層隔離和自動切換。因為數據庫的主庫暫時無法多機房部署,所以訂單、權益等核心服務和數據庫保持同城部署。目前在同城機房部署了兩套出口IP,可以進行互備和自動切換。

用戶訪問最近的機房總是最快的,會員將DNS區域劃分出北方,華中,華南三個獨立的區域進行部署,設置獨立的出口IP,區域劃分上也保證了流量的均衡。網絡組提供自動化的運維設施,通過故障演練,已經可以在故障時進行流量的自動切換。

在人員方面,邀請網絡部門專業人員對會員團隊進行網絡基礎架構和網絡保障方案等的講解,對過往故障進行整體分析總結,并一起對業務災備方案做出調整。通過大家的共同努力,近一年來將業務故障率降為零。

2.內網IDC機房的互備

各機房通過專線互連互通。應用的部署與上下游的服務保持在同一個機房最佳,不占用專線帶寬,提升服務穩定性,減少網絡抖動和晚高峰的影響。在統計了應用的上下游的流量分布之后,應用在部署上覆蓋了主要的機房,將最早的自建機房定義為備用機房。當主機房故障時,DNS系統通過定時檢測,發現異常后會自動切換到備用機房。內網服務間東西向流量是很大的,高峰時直接切換到另一個機房可能會引起機房不穩定,所以每個服務從Nginx層配置了應用級別的限流。極端情況下的流量監控和限流成為保障服務安全穩定的最后屏障。流量可以在機房間進行切換,如果流量超過機房承載能力,會觸發限流和報警。

▌升級應用服務

1.改造單點的應用

部分應用如worker一般都存在單點的情況,將應用改造成可以部署在多個IDC中,形成多個互備的集群。Worker一般會執行定時任務,通過改造定時任務,并使用了開源項目xxl-job,開發出了異步任務框架和調度系統(vip-job),定時任務由調度系統觸發,隨機選擇一臺服務器進行任務調度,解決了單點問題。

2.核心應用多機房部署

核心服務(如會員影片播放鏈路上的應用)會覆蓋盡量多的IDC,期望流量在同機房流轉,保證服務質量,同時核心應用的DNS配置根據地域和運營商兩個維度進行優化,給用戶提供最優的服務體驗。

3.升級數據庫

公司的數據庫部署架構為DNS+HA。通過實現Raft協議,開發了HA-Master/HA-Agent監控和切換軟件。當數據庫實例宕機時,agent會發送心跳檢查,觸發主備切換或是將宕機實例從DNS中下線,避免人工運維成本和宕機帶來的數據丟失。

消息中間件和Redis的高可用

會員使用服務云提供的RocketMQ,申請支持跨機房互備。

將ActiveMQ和歷史不支持HA的RocketMQ進行替換和升級以支持互備。

Redis使用Sentinal機制進行主備切換。兩者都具備HA的能力,使用起來比較方便。

1.會員應用的部署架構

會員將目前的機房進行了抽象和劃分,自建的核心機房可以承載所有的流量,部署了會員全套的應用。租賃機房存在擴容困難,機器折舊,流量單一,應用覆蓋不全的問題。將租賃機房劃分成一個整體,抽象成一個虛擬機房,從外部看,虛擬機房和自建機房一樣,支持多運營商,容量大,應用覆蓋全面,可以提供高質量的服務。目前會員實現的是自建機房與虛擬機房的互備。

2.運維平臺

會員打通了從DNS到虛擬機的資源信息,開發了運維平臺,建立了一系列的監控指標和運維工具。為機房之間業務切換和日常運維提供支撐服務和工具,架構如圖所示:

▌砥礪前行與未來展望

會員服務的高可用方案隨著公司的網絡與計算設施部門的工作進展而不斷優化升級,基礎設施部門提供了更多的能力和服務,方案也更整潔和強大。未來的重點將放在提升資源利用率,優化會員服務,同時保證業務的故障恢復在用戶無感知的情況下進行。

愛奇藝技術產品團隊公眾號,由愛奇藝技術產品團隊發起,秉持高效、開放、創新的理念,分享前沿技術,傳達愛奇藝生態理念及技術進展。

面試題:如何理解 Linux 的零拷貝技術?

上一篇

基于Pandas+ECharts的金融大數據可視化實現方案

下一篇

你也可能喜歡

會員服務在高可用架構的實戰探索

長按儲存圖像,分享給朋友

ITPUB 每周精要將以郵件的形式發放至您的郵箱


微信掃一掃

微信掃一掃
30岁的男人干啥赚钱快赚钱多 辽宁福彩11选五走势图 江苏快3开奖直播图 江苏快3计划app免费 所有期货公司都配资吗 内蒙快三实战 炒股入门 四川快乐12任选五 股票分析方法 广西11选5走势图表 江苏十一选五怎样杀号