微博紅包 大規模ker集群實踐經驗

2022-11-16 19:21:06 字數 2767 閱讀 8981

每年除夕看春晚,今年除夕搶紅包。在整個羊年的春節假期裡,大家都在忙著搶各種各樣的電子紅包,網際網路用紅包的方式革新了我們的拜年方式。為此,infoq策劃了「春節紅包」系列文章,以期為讀者剖析各大平台的紅包活動背後的技術細節。

本文為微博篇。

羊年春晚docker集群成功的為1.02億小夥伴刷微博、搶紅包提供了可靠的服務。本文將為大家揭開微博平台docker集群的神秘面紗,包括集群規模,技術架構等方面情況。

不過在分享前,先問兩個問題,不知道大家是否正為這兩個問題而糾結:

1. docker技術能夠解決什麼問題?

2. docker技術是否足夠成熟,是否可以在生產環境上大規模應用?

乙個月前,微博平台也在這兩個問題中糾結一段時間,事實勝於雄辯,先來看一下微博平台docker集群的規模情況:

docker集群規模達到1000+節點

qps峰值達到800k/s

4個9的服務sla達到150ms

共覆蓋23個核心服務

春晚共排程近300節點完成動態擴容

在引入任何新技術之前,在架構決策上必須回答:我們現在有什麼問題,它能夠解決嗎。否則就變成了唯技術論,造成不必要的資源浪費。

促使平台做出決定的乙個主要因素就是春晚的紅包飛活動。現在大家都知道,微博春晚紅包飛共計抽取了3.5億次,馬雲的支付寶紅包以及任性土豪的1234567元跨年紅包,在3分鐘內被搶光,帶動使用者用活躍度提公升46%,達到1.

02億使用者。同時廣大使用者還活躍在各種粉絲群中,為了搶到乙個分組紅包手機螢幕都快點碎了。面對這種到處開花的流量峰值,傳統按照業務峰值部署集群的方式,裝置成本將無法接受。

所以平台需要一種能夠在集群間快速排程業務的技術方案。

docker是目前能夠實現這一目的的最佳方案。為什麼原有的集群管理方式,無法實現快速業務切換呢,關鍵問題是環境的差異性。程式猿都知道在**執行的世界裡,拆東牆補西牆是一件不靠譜的事情,弄不好會塌方的。

虛擬化可以實現隔離軟體執行環境差異性,目前虛擬化技術有以openstack為代表傳統vm技術,和以docker為代表的container技術兩大類。如何在二者中進行選擇,平台從下面幾個維度進行了評估,供大家參考:

下面先介紹目前微博平台docker集群的技術棧:

宿主機:centos 6.5

docker:1.3.2

registry:docker-registry 0.9.1版本

組網:host模式

監控:cadvisor + elasticsearch + kibana + graphite

檔案系統:devicemapper

映象發布:jenkins container

容器:容器即服務,服務即容器

日誌:volume掛載

生命週期管理:自研,類似compose

服務發現:自研,類似kubernetes的pods和service

那麼從無到有部署乙個超過1000節點,風險和挑戰是非常大的。必須有一套方法能夠確保在改造過程中業務的穩定性,平台也想了很多辦法,但其實宗旨就乙個:可控。

把這些方法可以總結為幾條原則:

規模化stupid but works

無縫對接

先來談一談規模化。乍一看,規模化與可控是對矛盾體。程式設計師都知道,如果一種新技術不在大規模環境下驗證通過,是無法證明其可靠性。

從業務角度,一旦引入新技術,就要承擔出問題的風險,所以業務都希望引入的新技術是通過大規模環境驗證過的。對於這種情況,一般做法有兩種,一種是先在乙個業(bei)務(cui)試點,成功後再進行推廣。但是這種方式主要問題是反覆概率較大,引用一句台詞就是:

「我吃了沒事,不代表你吃了就沒事」,結果就會出現到處打補丁的局面,不利於架構標準化。所以平台採用的是「大鍋飯」的方式,就是所有業務同時上馬,逐步增加規模。這種方式好處顯而易見,差異性可以在第一時間得到解決,最終只有一套標準化架構。

但這種方式需要非常強的專案管理能力,保證各業務組目標一致,分工明確,里程碑清晰,同時還需要專案組成員有強烈的使命感,時間意識,團隊意識。

搞定團隊之後,首要任務就是要使工作保持方向,那麼什麼是正確方向呢:stupid but works。新技術落地專案失敗有很多因素,其中主要乙個誘因就是:

完美主義,或者叫偷換目標。典型症狀如下:目前架構不夠優雅,需要***。

例如docker的組網能力飽受詬病,此時不應該糾結乙個完美的組網方案,否則就可能專案不保。因為技術突破都依賴很多先決條件,可能是受限於基礎網路環境,受限於核心能力,所以此時最佳的策略是跟上趨勢,積累經驗,伺機突破。再比如docker對日誌資料管理方式奇多,但最完美的並不一定適合你,如果此時決定對現有的日誌管理進行改造,就合原本的目標背道而馳了。

最佳的策略是選擇認知成本最小的方案,而不是最完美的方案。

對已有集群進行docker化改造,最大的乙個阻力就是新老結合問題,所以docker集群必須能與原有運維、研發系統無縫對接,才能夠使專案順利進行。例如容器化,是否改造**。平台當時遇到的乙個問題是不同宿主機的容器分配的ip有可能是一樣的,原本獲取本地ip的**就會取到相同的值,直接導致分布式系統跟蹤系統失效。

所以要在docker層面解決這個差異性,而盡量不修改原系統設計。

對於docker未來部署規模達到萬級別後,還有很多技術難題有待解決,平台也會在下面幾個方面繼續探索,希望能夠把經驗回饋給社群:

網路瓶頸,萬級別的容器部署,勢必會挑戰現有的網路基礎設施,交換機的**表項會遇到瓶頸。網路隔離可以保證服務間互不影響,但是又限制了靈活排程,sdn是大趨勢。

彈性排程,目前還處於「社會主義初級階段」,一切都還要靠「**」下達指令。kubernetes、mesos、swarm等技術提供在萬級別集群規模下自動化彈性排程的可能性,但整體解決方案我們也還在摸索。

2023年3月22日

大規模外呼解決方案

背景呼叫中心 外呼,作為呼叫中心的乙個重要功能,越來越多的被國內眾多行業所重視。通過有效的外呼可以快速的提公升座席工作效率,從而提公升銷售業績。規模化 是電銷得以成功的要訣。人員集中後,在銷售管理 資料管理和系統維護上都可以發揮出規模效益。外呼平台的新挑戰 大規模外呼概述 方案特點 通訊資源整合服務...

大規模海水運動教學設計

三維教學目標 根據對課標 教材內容的分析,結合地理學科的特點和學生的特徵,按照地理新課標的要求,確定三維教學目標如下。知識和能力目標 掌握洋流的主要成因,根據全球風帶的分布,能初步分析說明洋流的形成及分布規律。過程與方法目標 1.根據全球風帶的分布,能畫出世界表層洋流分布的模式圖 2.根據給出的學法...

對大規模植被調查資料的應用

分布域 重 面積 分析型別化 環境要因 関連付 疑問課題通過分布區域的重疊面積把森林分類,把握演替的大致方向性森林型的分類化堆積岩類 中生代堆積岩類 古生 代堆積岩類 火山岩類 深成巖類 變成岩類 其他 組 東北地區 北海道環境因素貢獻率順序 最深積雪量第 紀其他第四紀最大傾斜角 地質最大傾斜角年降...