作互聯網應用很重要的一點是要保證服務可用性,特別是某些業務更是須要7*24小時不間斷的對外提供服務,任何停機、宕機都會引發大面積的用戶不滿。持續可用性是把業務服務化時一個須要考慮的重要指標,不少時候咱們都會犧牲一些功能來換取可用性。如何保證服務的持續可用性,是每一個互聯網架構師一直堅持不懈追求的目標。在不一樣行業、不一樣場景下都有不一樣的解決方案。今天就與你們聊聊特來電在物聯網模式下的多活數據中心架構上的認識和實踐。微信
特來電是全球首家提出了將車聯網、充電網、互聯網三網融合的充電樁生態公司,擁有近18萬個充電樁,覆蓋了全國240多個城市,服務客戶不只有ToC端、ToB端,還有不少的社會運營車輛。在如此複雜的客戶羣面前,充電網每時每刻都有大量的充電用戶,不管在靜寂無聲的夜晚,仍是在節假日,充電永不停歇。用戶入眠的時候,是咱們充電網絡最繁忙的時刻,能夠說特來電的充電網必需要有99.9%甚至更高的可用性,才能知足業務的須要。特來電的充電網與其餘廠商的充電樁還不同,其徹底構建在物聯網之上的。每一個充電終端都是智能的,都在時時刻刻與雲平臺保持着通信,下面是業務全景圖。網絡
像其餘互聯網公司同樣,咱們作多活也是無可奈何的事情:架構
基於以上考慮,以及填過無數坑的教訓,咱們決定必需要創建多活數據中心。既然要建多數據中心,那就要看看業界的一些主流作法和技術趨勢。在衆多的解決方案中咱們找到了兩篇很是富有表明性的文章:微信高併發資金交易系統設計方案——百億紅包背後的技術支撐、首席架構師揭祕螞蟻金服互聯網IT運維體系實踐。併發
微信紅包的主要思路是:運維
螞蟻金服的主要思路是:異步
螞蟻金服提出了「LDC」架構,其核心思想是:把數據水平拆分的思路,向上提高到接入層、終端層,從接入層開始,把原來部署在一個IDC中的系統集羣,進一步分紅多個更細粒度的部署單元。分佈式
經過兩家互聯網巨頭公司的方案能夠看出一個共同的特色,就是指望經過分流的模式,把大流量切成小流量,從接入層開始,把原來部署在一個IDC中的系統集羣,進一步分紅多個更細粒度的部署單元 ,應對流量壓力。這種架構下,不只僅解決了流量天花板問題,並且在系統總體可用性上有了一個質的變化。即便系統不可用,也是少部分服務單元出問題,不會影響全國業務。這不正是咱們求之不得的東西嗎?高併發
基於此咱們規劃設計了特來電雲平臺的多活系統架構。整體思路是分爲三步走:性能
第一步:中間件、技術平臺要進行適應性改造,以支持多數據中心、多Set化的架構。無論後續部署結構如何變化,技術平臺和組件都要可適應。下面是技術平臺和中間件的架構圖,圖中的五個平臺都須要改造。設計
第二步:架設兩個數據中心,每一個數據中心部署一個服務單元,兩個數據中心進行引流,驗證整體架構和設想,實現雙活架構。核心思路:
第三步:架設多個數據中心、多個服務單元,按照地區對流量進行切割,真正實施多活架構。核心思路:
經過近半年的努力,咱們不只完成了第一步的工做,並且還完成了第二步規劃。在2017-6-27日,上海數據中心正式激活並引流成功。至此,咱們終於在多活架構上邁出了最堅實的一步。這標誌着,咱們不只僅具有了完善了技術架構,並且這個架構是能夠複製的、多活的,終於有可能把整個系統可用性作到100%。
架構的變遷會隨着業務的變化而變化,不一樣階段有不一樣的需求。規劃了這些、作了這些,也是隻萬里長征的第一步。2020年後纔會真正迎來新能源汽車爆發式發展,屆時會有50%以上的電動汽車在咱們的平臺下充電,天天都有可能數千萬度電甚至數億電在特來電的充電網上發生。架構的升級將會繼續,會愈來愈快,也會愈來愈複雜,可是咱們樂在其中,指望志同道合的戰友一塊兒戰鬥!!!