12306是2011年底上線,2014年淘寶討論將余票放到云上;75%的余票查詢業務放到云上;
為什么是余票查詢?訪問量90%以上,不需要對整個網站業務架構改動;
實施過程?余票模塊分離獨立部署,云上部署,
云計算與堆硬件什么區別?硬件周期長、空閑多;云按量計費;
內存數據庫使用VMWare的GemFire;分布式內存運算數據管理云平臺-Pivotal Gemfire;
12306技術負責人朱建生說,為了應對2015年春運高峰,采用五項措施:一是利用外部
云計算資源分擔系統查詢業務,可根據高峰期業務量的增長按需及時擴充。二是通過
雙中心運行的架構,系統內部處理容量擴充一倍,可靠性得到了有效保證。三是對系統
的互聯網接入帶寬進行擴容,并可根據流量情況快速調整,保證高峰時段旅客順暢訪問
網站。四是防范惡意搶票,通過技術手段屏蔽搶票軟件產生的惡意流量。五是制定了多套
應急預案,以應對突發情況。
選擇Pivotal Gemfire原因:
1,關聯數據節點設計:可以根據客戶的業務邏輯特性和數據關聯性,將關聯性強的數據放置于同一個服務器節點,提高系統性能,避免分布式系統服務器的頻繁數據交換。
2. 將數據移到內存:由于數據是放在內存里面,屏蔽傳統數據庫頻繁訪問, CPU與數據庫的交互作用,影響服務器性能。內存的數據交換速度遠高于磁盤速度上千倍, 極大提高系統性能。
3. 擴展和伸縮性:以Gemfire構建的應用云平臺,是以 x86 PC服務器為主的硬件基礎。在保證系統的性能下,此平臺可以隨著客戶業務的成長來任意調配x86服務器的數量,避免以后昂貴的硬件升級帶來的困擾。經POC測試結果顯示,整個系統性能可隨著服務器的數量的增加實現幾乎線性的成長。
4. 數據可靠性:在同個集群里面可以有多個數據節點備份,數據可以自動同步,或是將內存數據持久化到硬盤或是數據庫
5. 跨地域的數據分布或同步 :可以透過“廣域網”將指定的 Gemfire集群的內存數據“實時同步”到異地的數據中心。這是屬于“應用層”的數據同步異于傳統的“數據庫”同步。
6. Pivotal Gemfire使用 x86 PC服務器,其性價比遠遠高于 Unix 小型機。
如何設計一個秒殺系統:
秒殺系統特點:同一時間峰值,請求大于庫存,邏輯簡單:下單減庫存;
秒殺架構設計:限流(只允許少部分流量進入服務器后端),
削峰(利用緩存和消息中間件),異步處理(提高系統并發性,削峰的方式),
內存緩存(數據庫瓶頸),可擴展(流量來了,拓展機器);
設計思路:將請求攔截在系統上游,降低下游壓力;充分利用緩存;利用消息隊列;
前端方案:頁面靜態化(用CDN),禁止重復提交,用戶限流(只允許提交一次,IP限流)
后端方案:限制UserId訪問頻率;
服務層:采用消息隊列緩存請求(服務層知道只有100個手機,沒必要把100萬請求都交到數據庫,把請求交到消息隊列進行緩存,數據庫層訂閱消息減庫存,減庫存成功返回秒殺成功,失敗返回秒殺結束),利用緩存應對讀請求(類似12306讀多寫少的業務,利用緩存分擔數據庫壓力),利用緩存應對寫請求(庫存數據轉移到Redis);
數據庫層,只承擔“能力范圍內”的訪問請求。
利用消息中間件和緩存實現簡單秒殺系統:用Redis接收請求,滿了就不接收了,用數據庫慢慢處理請求。