paulwong

          My Links

          Blog Stats

          常用鏈接

          留言簿(66)

          隨筆分類(1387)

          隨筆檔案(1145)

          文章分類(7)

          文章檔案(10)

          相冊

          收藏夾(2)

          AI

          Develop

          E-BOOK

          Other

          養生

          微服務

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          鐵路的售票系統來說明分庫分表對架構的影響

          一、問題:鐵路的售票系統的數據量是海量嗎?

          不是。因為數據量不大,真不大。

          每一個車次與車次間是獨立的,每車次不超過2000張票,一天發車不超過50萬車次;
          以預售期15天來講,15*0.1億張不超過1.5億筆的熱線數據,稱不上海量數據的。
          再加上可以按線路分庫,更是不到千萬級的單表容量。已經發車完成的進入歸檔分析。
          即數據庫按路線使用不同的服務器,不同的車次放在不同的表中。并發量鎖真不大。

          當然,如果不分庫分表,再加上不歸檔處理,鐵路的售票系統的數據量看起來是海量的;
          關鍵是這海量的數據沒有意義。


          二、如何分庫分表?

          2.1 分庫,考慮數據間沒有直接關系和服務器如何部署

          鐵路的售票系統為例來說,按路線分庫,再按車次分表是合理的。
          設路線有1萬條,按每1000條需要兩臺服務器(一臺熱機沉余),不到20臺服務器
          如果使用SAN存儲,則使用SAN作為存儲,本機作為熱機沉余,只需要10臺。
          當然使用mySQL這種經濟型數據庫,服務器需要更多來防災;
          即可以采用雙寫或多寫的方式來保證數據的絕對安全。

          2.2分表,考慮數據間不存在重疊,即數據滿足二分原則

          鐵路的售票系統的任意兩個車次是沒有關系的,所以可以分表。
          電信的某個用戶的通話和其它用戶的通話記錄,也是沒有關系,所以可以分表處理
          (實際上電信的系統,分庫分表后也是不大的,難在后臺的計費、結算等規則)



          三、數據庫訪問接口



          1. 元數據:如何識別到當前要處理的數量在哪張表?

          鐵路的售票系統會有一個車次管理系統,例2012年2月12日 D3206 車次,
          按預先設計的在哪臺服務器的哪個庫,建哪個表。

          2.建立元數據的規則:即具體如何分庫分表的規則

          這個就是數據庫的訪問接口。

          3.數據庫訪問接口的透明程度

          即哪個層知道哪些元數據信息。
          例,是否讓窗口售票的客戶端來解析元數據的規則然后緩存,還是通過中間件來解析緩存的

          具體各層使用怎樣透明程度,和業務性質、節點和數據中心的拓撲等有關。



          四、歷史數據歸檔與分析

          1.使用分庫分表后,數據需要歸檔,分析處理的程序變得復雜,但使聯機交易變得簡單
          2.分析:要注意是針對熱線數據分析、歸檔數據分析、混合分析有關,
          通過分庫分表和歸檔,更方便使用分布式的統計方案。

          具體可以參考,淘寶的開放平臺架構師寫的文章:

          結論:分庫分表跟不分庫分表,整個架構是完全不一樣的。

          像鐵票的售票系統、淘寶、電信、銀行等,絕對要采用分庫分表的數據存儲方案,

          來解決數據量的增長而不影響性能的問題。

          像淘寶等互聯網應用還要解決帶寬即CDN問題。

          posted on 2012-01-17 13:24 paulwong 閱讀(625) 評論(0)  編輯  收藏 所屬分類: 性能優化火車站售票系統

          主站蜘蛛池模板: 电白县| 衡阳市| 二连浩特市| 安仁县| 黑水县| 万安县| 张家口市| 水城县| 晋江市| 杭锦后旗| 桐梓县| 扬中市| 靖西县| 阿图什市| 哈尔滨市| 鄱阳县| 莱阳市| 博罗县| 桃江县| 封开县| 丰顺县| 柳州市| 文登市| 平武县| 耒阳市| 东阿县| 扎鲁特旗| 岳普湖县| 开江县| 枞阳县| 塔河县| 岳池县| 广安市| 石门县| 忻州市| 龙门县| 武清区| 修武县| 黎平县| 顺平县| 南昌市|