物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊(cè)

物聯(lián)網(wǎng)模式下的多活數(shù)據(jù)中心架構(gòu)認(rèn)識(shí)與實(shí)踐

作者:本站收錄
來(lái)源:微科技
日期:2017-07-14 08:59:05
摘要:做互聯(lián)網(wǎng)應(yīng)用很重要的一點(diǎn)是要保證服務(wù)可用性,特別是某些業(yè)務(wù)更是需要7*24小時(shí)不間斷的對(duì)外提供服務(wù),任何停機(jī)、宕機(jī)都會(huì)引起大面積的用戶不滿。持續(xù)可用性是把業(yè)務(wù)服務(wù)化時(shí)一個(gè)需要考慮的重要指標(biāo),很多時(shí)候我們都會(huì)犧牲一些功能來(lái)?yè)Q取可用性。

  做互聯(lián)網(wǎng)應(yīng)用很重要的一點(diǎn)是要保證服務(wù)可用性,特別是某些業(yè)務(wù)更是需要7*24小時(shí)不間斷的對(duì)外提供服務(wù),任何停機(jī)、宕機(jī)都會(huì)引起大面積的用戶不滿。持續(xù)可用性是把業(yè)務(wù)服務(wù)化時(shí)一個(gè)需要考慮的重要指標(biāo),很多時(shí)候我們都會(huì)犧牲一些功能來(lái)?yè)Q取可用性。如何保證服務(wù)的持續(xù)可用性,是每個(gè)互聯(lián)網(wǎng)架構(gòu)師一直堅(jiān)持不懈追求的目標(biāo)。在不同行業(yè)、不同場(chǎng)景下都有不同的解決方案。今天就與大家聊聊特來(lái)電在物聯(lián)網(wǎng)模式下的多活數(shù)據(jù)中心架構(gòu)上的認(rèn)識(shí)和實(shí)踐。

  特來(lái)電是全球首家提出了將車(chē)聯(lián)網(wǎng)、充電網(wǎng)、互聯(lián)網(wǎng)三網(wǎng)融合的充電樁生態(tài)公司,擁有近18萬(wàn)個(gè)充電樁,覆蓋了全國(guó)240多個(gè)城市,服務(wù)客戶不僅有ToC端、ToB端,還有很多的社會(huì)運(yùn)營(yíng)車(chē)輛。在如此復(fù)雜的客戶群面前,充電網(wǎng)每時(shí)每刻都有大量的充電用戶,無(wú)論在靜寂無(wú)聲的夜晚,還是在節(jié)假日,充電永不停歇。用戶入眠的時(shí)候,是我們充電網(wǎng)絡(luò)最繁忙的時(shí)刻,可以說(shuō)特來(lái)電的充電網(wǎng)必須要有99.9%甚至更高的可用性,才能滿足業(yè)務(wù)的需要。特來(lái)電的充電網(wǎng)與其他廠商的充電樁還不一樣,其完全構(gòu)建在物聯(lián)網(wǎng)之上的。每個(gè)充電終端都是智能的,都在時(shí)時(shí)刻刻與云平臺(tái)保持著通訊,下面是業(yè)務(wù)全景圖。

  像其他互聯(lián)網(wǎng)公司一樣,我們做多活也是迫不得已的事情:

  所有業(yè)務(wù)放到一個(gè)籃子里面,當(dāng)出現(xiàn)嚴(yán)重故障時(shí),整個(gè)充電云服務(wù)將完全宕機(jī),無(wú)法滿足SLA99.9%甚至更高的要求。

  云平臺(tái)架構(gòu)完全是分布式的,部署結(jié)構(gòu)復(fù)雜,各產(chǎn)品功能不支持灰度發(fā)布,產(chǎn)品新功能上限頻繁,產(chǎn)品中隱藏很深的bug,很容易引起大面積的云服務(wù)故障。

  因?yàn)榧軜?gòu)和一些技術(shù)實(shí)現(xiàn),一個(gè)數(shù)據(jù)中心服務(wù)負(fù)載總會(huì)有上限,在特定的一些條件下,增加虛擬數(shù)量也無(wú)法提升系統(tǒng)的服務(wù)水平(比如:TCP連接數(shù)是有上限的)

  基于以上考慮,以及填過(guò)無(wú)數(shù)坑的教訓(xùn),我們決定必須要建立多活數(shù)據(jù)中心。既然要建多數(shù)據(jù)中心,那就要看看業(yè)界的一些主流做法和技術(shù)趨勢(shì)。在眾多的解決方案中我們找到了兩篇非常富有代表性的文章:微信高并發(fā)資金交易系統(tǒng)設(shè)計(jì)方案——百億紅包背后的技術(shù)支撐、首席架構(gòu)師揭秘螞蟻金服互聯(lián)網(wǎng)IT運(yùn)維體系實(shí)踐。

  微信紅包的主要思路是:

  系統(tǒng)垂直SET化,分而治之。各個(gè)SET之間相互獨(dú)立,互相解耦。并且同一個(gè)紅包ID的所有請(qǐng)求,包括發(fā)紅包、搶紅包、拆紅包、查詳情詳情等,垂直stick到同一個(gè)SET內(nèi)處理,高度內(nèi)聚。通過(guò)這樣的方式,系統(tǒng)將所有紅包請(qǐng)求這個(gè)巨大的洪流分散為多股小流,互不影響,分而治之。

  邏輯Server層將請(qǐng)求排隊(duì),解決DB并發(fā)問(wèn)題。使拆紅包的事務(wù)操作串行地進(jìn)入DB,只需要將請(qǐng)求在Server層以FIFO(先進(jìn)先出)的方式排隊(duì),就可以達(dá)到這個(gè)效果。從而問(wèn)題就集中到Server的FIFO隊(duì)列設(shè)計(jì)上。

  雙維度庫(kù)表設(shè)計(jì),保障系統(tǒng)性能穩(wěn)定。當(dāng)單表數(shù)據(jù)量達(dá)到一定程度時(shí),DB性能會(huì)有大幅度下降,影響系統(tǒng)性能穩(wěn)定性。采用冷熱分離,將歷史冷數(shù)據(jù)與當(dāng)前熱數(shù)據(jù)分開(kāi)存儲(chǔ)。系統(tǒng)在以紅包ID維度分庫(kù)表的基礎(chǔ)上,增加了以循環(huán)天分表的維度,形成了雙維度分庫(kù)表的特色

  螞蟻金服的主要思路是:

  螞蟻金服提出了“LDC”架構(gòu),其核心思想是:把數(shù)據(jù)水平拆分的思路,向上提升到接入層、終端層,從接入層開(kāi)始,把原來(lái)部署在一個(gè)IDC中的系統(tǒng)集群,進(jìn)一步分成多個(gè)更細(xì)粒度的部署單元。

  每個(gè)單元對(duì)外是封閉的,在一個(gè)單元內(nèi)的系統(tǒng)調(diào)用鏈路和各類(lèi)存儲(chǔ)訪問(wèn)是局部化在本單元內(nèi)的;

  每個(gè)單元的實(shí)時(shí)數(shù)據(jù)是獨(dú)立不共享的;會(huì)員或配置類(lèi)信息等對(duì)延時(shí)性要求不高的數(shù)據(jù)全局共享;

  單元間的通信統(tǒng)一管控,盡量以異步化消息進(jìn)行通信;同步調(diào)用則通過(guò)單元間代理方案實(shí)現(xiàn)。

  通過(guò)兩家互聯(lián)網(wǎng)巨頭公司的方案可以看出一個(gè)共同的特點(diǎn),就是期望通過(guò)分流的模式,把大流量切成小流量,從接入層開(kāi)始,把原來(lái)部署在一個(gè)IDC中的系統(tǒng)集群,進(jìn)一步分成多個(gè)更細(xì)粒度的部署單元 ,應(yīng)對(duì)流量壓力。這種架構(gòu)下,不僅僅解決了流量天花板問(wèn)題,而且在系統(tǒng)整體可用性上有了一個(gè)質(zhì)的變化。即使系統(tǒng)不可用,也是少部分服務(wù)單元出問(wèn)題,不會(huì)影響全國(guó)業(yè)務(wù)。這不正是我們夢(mèng)寐以求的東西嗎?

  基于此我們規(guī)劃設(shè)計(jì)了特來(lái)電云平臺(tái)的多活系統(tǒng)架構(gòu)??傮w思路是分為三步走:

  第一步:中間件、技術(shù)平臺(tái)要進(jìn)行適應(yīng)性改造,以支持多數(shù)據(jù)中心、多Set化的架構(gòu)。不管后續(xù)部署結(jié)構(gòu)如何變化,技術(shù)平臺(tái)和組件都要可適應(yīng)。下面是技術(shù)平臺(tái)和中間件的架構(gòu)圖,圖中的五個(gè)平臺(tái)都需要改造。

  第二步:架設(shè)兩個(gè)數(shù)據(jù)中心,每個(gè)數(shù)據(jù)中心部署一個(gè)服務(wù)單元,兩個(gè)數(shù)據(jù)中心進(jìn)行引流,驗(yàn)證總體架構(gòu)和設(shè)想,實(shí)現(xiàn)雙活架構(gòu)。核心思路:

  上海、北京異地兩數(shù)據(jù)中心雙活,部分充電樁分流到上海數(shù)據(jù)中心。

  用戶充電時(shí),根據(jù)集控所在數(shù)據(jù)中心,下達(dá)充電指令。非充電業(yè)務(wù),默認(rèn)訪問(wèn)主數(shù)據(jù)中心

  當(dāng)北京數(shù)據(jù)中心或上海數(shù)據(jù)中心宕機(jī)時(shí),通過(guò)流量管理器自動(dòng)切換到另一個(gè)數(shù)據(jù)中心。提升系統(tǒng)可用性。

  第三步:架設(shè)多個(gè)數(shù)據(jù)中心、多個(gè)服務(wù)單元,按照地區(qū)對(duì)流量進(jìn)行切割,真正實(shí)施多活架構(gòu)。核心思路:

  建立多活數(shù)據(jù)中心,每個(gè)數(shù)據(jù)中心多個(gè)服務(wù)單元。

  充電樁在接入云服務(wù)時(shí),根據(jù)所在地區(qū)自動(dòng)引流到對(duì)應(yīng)的服務(wù)單元。

  用戶充電時(shí),根據(jù)登錄地區(qū),由流量管理器映射到對(duì)應(yīng)的服務(wù)單元

  通過(guò)近半年的努力,我們不僅完成了第一步的工作,而且還完成了第二步規(guī)劃。在2017-6-27日,上海數(shù)據(jù)中心正式激活并引流成功。至此,我們終于在多活架構(gòu)上邁出了最堅(jiān)實(shí)的一步。這標(biāo)志著,我們不僅僅具備了完善了技術(shù)架構(gòu),而且這個(gè)架構(gòu)是可以復(fù)制的、多活的,終于有可能把整個(gè)系統(tǒng)可用性做到100%。

  架構(gòu)的變遷會(huì)隨著業(yè)務(wù)的變化而變化,不同階段有不同的需求。規(guī)劃了這些、做了這些,也是只萬(wàn)里長(zhǎng)征的第一步。2020年后才會(huì)真正迎來(lái)新能源汽車(chē)爆發(fā)式發(fā)展,屆時(shí)會(huì)有50%以上的電動(dòng)汽車(chē)在我們的平臺(tái)下充電,每天都有可能數(shù)千萬(wàn)度電甚至數(shù)億電在特來(lái)電的充電網(wǎng)上發(fā)生。架構(gòu)的升級(jí)將會(huì)繼續(xù),會(huì)越來(lái)越快,也會(huì)越來(lái)越復(fù)雜,但是我們樂(lè)在其中,期望志同道合的戰(zhàn)友一起戰(zhàn)斗!!!

人物訪談