做互聯(lián)網(wǎng)應(yīng)用很重要的一點是要保證服務(wù)可用性,特別是某些業(yè)務(wù)更是需要7*24小時不間斷的對外提供服務(wù),任何停機、宕機都會引起大面積的用戶不滿。持續(xù)可用性是把業(yè)務(wù)服務(wù)化時一個需要考慮的重要指標(biāo),很多時候我們都會犧牲一些功能來換取可用性。如何保證服務(wù)的持續(xù)可用性,是每個互聯(lián)網(wǎng)架構(gòu)師一直堅持不懈追求的目標(biāo)。在不同行業(yè)、不同場景下都有不同的解決方案。今天就與大家聊聊特來電在物聯(lián)網(wǎng)模式下的多活數(shù)據(jù)中心架構(gòu)上的認(rèn)識和實踐。
特來電是全球首家提出了將車聯(lián)網(wǎng)、充電網(wǎng)、互聯(lián)網(wǎng)三網(wǎng)融合的充電樁生態(tài)公司,擁有近18萬個充電樁,覆蓋了全國240多個城市,服務(wù)客戶不僅有ToC端、ToB端,還有很多的社會運營車輛。在如此復(fù)雜的客戶群面前,充電網(wǎng)每時每刻都有大量的充電用戶,無論在靜寂無聲的夜晚,還是在節(jié)假日,充電永不停歇。用戶入眠的時候,是我們充電網(wǎng)絡(luò)最繁忙的時刻,可以說特來電的充電網(wǎng)必須要有99.9%甚至更高的可用性,才能滿足業(yè)務(wù)的需要。特來電的充電網(wǎng)與其他廠商的充電樁還不一樣,其完全構(gòu)建在物聯(lián)網(wǎng)之上的。每個充電終端都是智能的,都在時時刻刻與云平臺保持著通訊,下面是業(yè)務(wù)全景圖。
像其他互聯(lián)網(wǎng)公司一樣,我們做多活也是迫不得已的事情:
所有業(yè)務(wù)放到一個籃子里面,當(dāng)出現(xiàn)嚴(yán)重故障時,整個充電云服務(wù)將完全宕機,無法滿足SLA99.9%甚至更高的要求。
云平臺架構(gòu)完全是分布式的,部署結(jié)構(gòu)復(fù)雜,各產(chǎn)品功能不支持灰度發(fā)布,產(chǎn)品新功能上限頻繁,產(chǎn)品中隱藏很深的bug,很容易引起大面積的云服務(wù)故障。
因為架構(gòu)和一些技術(shù)實現(xiàn),一個數(shù)據(jù)中心服務(wù)負(fù)載總會有上限,在特定的一些條件下,增加虛擬數(shù)量也無法提升系統(tǒng)的服務(wù)水平(比如:TCP連接數(shù)是有上限的)
基于以上考慮,以及填過無數(shù)坑的教訓(xùn),我們決定必須要建立多活數(shù)據(jù)中心。既然要建多數(shù)據(jù)中心,那就要看看業(yè)界的一些主流做法和技術(shù)趨勢。在眾多的解決方案中我們找到了兩篇非常富有代表性的文章:微信高并發(fā)資金交易系統(tǒng)設(shè)計方案——百億紅包背后的技術(shù)支撐、首席架構(gòu)師揭秘螞蟻金服互聯(lián)網(wǎng)IT運維體系實踐。
微信紅包的主要思路是: