對于互聯網服務來說,關鍵業務7*24小時不間斷的服務非常重要。作為一個享受互聯網服務的人,你能想象到抖音微博七分鐘無法加載、微信五分鐘無法打開、支付寶3分鐘無法支付的情況嗎?簡直無法想象,生活在微信、微博、QQ、抖音、支付寶、淘寶、美團外賣、滴滴打車的我們已經習慣了打開app就可以聊天、購物、刷視頻、打車、點外賣了。而在這些服務時時可運行的背后,全都是一線大廠的開發人員、運維人員努力工作的保障。
那么一線大廠人員是如何保障系統高可用的呢?四個字:服務多活。所謂“活”指的是業務隨時提供服務,多活是指業務在多個地方都可以隨時提供服務。我們知道服務都是部署在服務器上,而服務器都是安裝在機房內的。我們更知道,沒有什么事情是萬無一失的,機房也可能會不工作,比如機房斷電、機房火災、機房地震等等,所有的這些不可抗拒因素都會導致機房內所有的服務器崩塌,進而導致業務崩潰,因此我們需要服務多活。
服務多活如果落地到解決方案上,那便是同城雙活架構、兩地三中心架構、異地多活架構。
所謂同城雙活,指的是在同城或相近區域內建立兩個機房。這樣的好處是機房與機房之間距離比較近,通信鏈路的質量很好,數據傳輸快,容易保障數據的一致性。在同城雙活架構中,前端的請求數據來了之后,會根據請求所發起的地理位置進行就近分發,請求分發在最近的機房后,機房內的應用就互相調用,數據寫入數據庫,完成業務的請求。在應用所部署的機器集群有內有zookeeper集群,將機房內的生產者消費者節點數據實時雙向同步,數據庫集群的部署采取Master&Slave模式,通過讀寫分離,將讀數據路由到就近機房內節點,寫數據路由到master節點所在機房。如果有某個機房出現了故障,運維人員只需要改動路由方式將流量路由到另外一個機房即可。
同城雙活架構的優點有兩個,第一是服務同城雙活、數據同城備份,保障了服務高可用、數據高一致性性,第二是架構比較簡單,同城之間距離較近,網絡通信質量好。但是也存在一些缺點,第一是數據庫寫數據的時候跨機房的調用增加了響應時間,會帶來一定程度的用戶體驗影響,第二是如果該城市發生了地震火災等情況,整個服務都會癱瘓。
所謂兩地三中心,指的是同城雙中心、一個異地災備中心。這是同城雙活架構的升級版,解決了如果同城發生了火災地震等不可抗力因素時應用提供服務的情況。但其實也存在一個風險,就是災備中心的數據都是“冷”的,平時只是定期同步了中心機房的數據,并沒有真實的用戶請求過來,如果真的到了同城雙中心都無法對外提供服務的時候,災備中心去進行業務的恢復,對外提供服務需要一定的耗時。
所謂異地多活,指的是在不同的地域有多個機房對外提供服務。在異地多活架構中,存在很多挑戰,比如物理距離帶來的延時、數據的一致性、數據的完整性等等。在異地多活架構中,我們采用了更巧妙的方法,即根據業務數據將業務應用分為三類,第一類是對延時不敏感但對數據一致性要求非常高的應用,第二類是對延時敏感但對數據一致性要求不高的應用,第三類是在一次操作內要完成所有業務操作的應用。在服務高可用方面,根據應用的特性進行不同的方案部署即可。在請求分發方面,為了保障用戶請求都能正確進入自己所屬的業務模塊,我們在機房的入口都會部署一個網關,根據用戶請求類型把流量分發到對應的模塊。在數據同步方面,還是根據業務類型以及業務部署模式進行讀寫備份。
異地多活架構有三個優點、兩個缺點。第一個優點是服務異地多活、數據異地多活,有多個地域的機器隨時在提供服務,帶來了容災能力的大幅度提高。第二個優點是服務可以水平擴展,業務增長快,那么就多部署幾個地域的機房就好了。第三個優點是防風險能力高,用戶請求分發到了多個機房、地區,能避免斷電火災地震等情況帶來的服務不可用,降低了故障影響范圍。它的第一個缺點是部署和運維成本高,我們可以看到在應用分類、異地部署、數據同步上是多個地方多個機房多臺服務器之間同時進行的。第二個缺點是跨地域、跨機房、跨服務之間的調用帶來的延時。
至此,對于同城雙活、兩地三中心、異地多活我們就介紹完了。講真的,我們生活在互聯網時代,真的無法想象抖音微信微博支付寶淘寶都不能用了是什么樣子?還好還好,有一個又一個的互聯網后浪們為我們搭建了高可用的服務架構,保障了我們的正常互聯網生活。如果你也是致力于服務互聯網網民,那就趕緊加入吧~
全面的標準化教學模式
嚴謹的校園管理制度
希望熱愛互聯網專業的小伙伴們能夠走進我們的校園
一起度過愉快的求學歷程,共同擁抱更美好的未來!
運城北大青鳥,期待與您相遇!