為什麼12306、電信運營商等網站那麼難用?

之前有人調侃,12306等國家級網站,應該讓BAT(百度、阿里巴巴、騰訊)來幫忙開發網站。為什麼這些大型網站加載慢、經常網頁卡死呢?
10 個回答
差评
2018-11-15

說句公道話,訪問量真的是硬件問題。

任何跟負載有關的事兒,乘以上億的中國用戶,對服務器都堪比核打擊。。。

尤其是春運期間, 12306 的壓力大的一批。

為什麼12306、電信運營商等網站那麼難用?

對服務器來說,訂火車票是件很凶殘的事——

首先身份驗證,防範機器人等等扣款等等操作就不提了 ~

庫存這個事兒,火車票還真不好算,因為火車是一站站停靠的。

假設有一班 南京 - 上海 - 杭州 的列車,如果有一個人買了 “ 上海 - 杭州 ” 的車票,那麼 “ 南京 - 杭州 ” 的票也得減庫存。

也就是說,你這邊一個火車票結算了,其他路線火車票也得檢查一下餘票,一張票就會產生好幾次運算過程。

再乘一下春運時的流量。

為什麼12306、電信運營商等網站那麼難用?

嗯。。。服務器沒炸也是個奇蹟了

洛月踏雪zxd
2018-04-01

12306首秀被罵的狗血噴頭後鐵道部找來IBM、阿里巴巴等大企業要解決方案,給出的條件是資金管夠但是問題得解決。幾大企業最後都拒絕了(其中阿里巴巴最後負責了排隊系統的建設)。12306開始自己嘗試解決問題。他們發現市面上可以買到的成套解決方案都不足以應付春運購票負載,所以只能自己改進已有的數據庫(注:其實是改用

VMware SQLFire/GemFire

,這裡我之前理解錯誤)。以前12306用的是小型機,發現性能嚴重不足,遂改用x86系統+linux平臺(原平臺為

HP Superdome

小型機,UNIX系統,

Sybase ASE

數據庫)。最後他們的核心繫統用了十幾個節點(現在應該是17節點)的多路Xeon E7(具體幾路待考),每個節點配1TB內存,數據庫全部在內存中運行。2013年春運,12306系統峰值負載11萬tps,與2012年淘寶雙11活動峰值負載相當,新的系統基本經受住了考驗。

我這兩天也在思考這個事,我想以這個事來粗略地和大家討論一下網站性能的問題。因為倉促,而且完全基於本人有限的經驗和了解,所以,如果有什麼問題還請大家一起討論和指正。(這又是一篇長文,只討論性能問題,不討論那些UI,用戶體驗,或是是否把支付和購票下單環節分開的功能性的東西)

另外,關於第三方合作對方給出的信息是IBM、Oracle、Sybase全部不能滿足要求,主要是這些廠商的方案部署以後,要升級時不能做到不停機靈活擴展。也就是說,IBM沒有做到是他們技術不足“搞不定”。阿里巴巴參與了改造,負責了排隊系統。此外,雖然後端經受住了壓力,前端卻如大家所看到的那樣還是頻頻卡死。到底卡死的原因是前端水平太低還是訪問壓力太大,暫時沒有可靠的信息供判斷。

淘寶的問題是其系統架構是分散度較高的,各個訂單之間關聯度不大;而12306每出一張票都要對全線路做數據更新(因為一條線路存在多個站點),因此係統負載相較淘寶來說集中很多,直接搬淘寶的方案也無法解決問題。淘寶的應用類型決定了阿里巴巴可以通過部署大量的服務器來分散壓力,但12306就不行。其實他們的核心繫統的硬件成本不過數百萬,不是他們不想採購更多服務器,而是買更多的服務器也沒什麼用途。最後,在經過軟件層面的優化之後,12306的瓶頸其實是核心節點的CPU、內存性能。但是這個性能的提升不是朝夕的事情,而是受限於摩爾定律,基本上每兩年才能翻一倍多些。(這段話是我自己的分析,不過現在12306的後端數據庫系統應付現有需求已經夠用了)

補充:關於座位實時複用,我看到的信息明確表明12306出票時,每出一張區間票都要實時調整該線路其他受影響區間段的餘票數量,且這是很大的壓力來源;另外,對方表示所使用的GemFire數據庫與簡單的memcache/redis數據緩衝不同,有著本質區別。

任何技術都離不開業務需求,所以,要說明性能問題,首先還是想先說說業務問題。

  • 其一有人可能把這個東西和QQ或是網遊相比。但我覺得這兩者是不一樣的,網遊和QQ在線或是登錄時訪問的更多的是用戶自己的數據,而訂票系統訪問的是中心的票量數據,這是不一樣的。不要覺得網遊或是QQ能行你就以為這是一樣的。網遊和QQ 的後端負載相對於電子商務的系統還是簡單。
  • 其二有人說春節期間訂火車的這個事好像網站的秒殺活動。的確很相似,但是如果你的思考不在表面的話,你會發現這也有些不一樣。火車票這個事,一方面會伴隨著大量的查詢操作,更BT的是下單的時候需要對數據庫很多的一致性的操作,一方面是從起點到終點各個分段票的一致性,另一方面,買的人路線、車次、時間選擇有很多,會不停地改變下單方式。而秒殺,直接殺就好了,沒有那麼多查詢和一致性的問題。另外,關於秒殺,完全可以做成只接受前N個用戶的請求(完全不操作後端的任何數據, 僅僅只是對用戶的下單操作log),這種業務,只需要在內存cache中放好可秒殺的數量,還可以把數據分佈開來放,100商品,10臺服務器一臺放10個,無需在當時操作任何數據庫。可以訂單數夠後,停止秒殺,然後批量寫數據庫。而且秒殺的商品不多。火車票這個不是像秒殺那麼簡單的,春運時間,幾乎所有的票都是熱門票,而且幾乎是全國人民都來了,而且還有轉車業務,多條線的庫存都要做事務操作,你想想吧,這有多難。(淘寶的雙十一也就3百萬用戶,而火車票瞬時有千萬級別甚至是億級別的)(更新:2014年1月11日:來了淘寶後,對淘寶的系統有了解,淘寶的秒殺活動,本質上是用輸驗證碼並在CDN上把用戶直接過濾掉了,比如:1千萬個用戶過濾了只剩2萬個用戶,這樣數據庫就頂得住了)
  • 其三有人拿這個系統和奧運會的票務系統比較。我覺得還是不一樣。雖然奧運會的票務系統當年也一上線就廢了。但是奧運會用的是抽獎的方式,也就是說不存在先來先得的搶的方式,而且,是事後抽獎,事前只需要收信息,事前不需要保證數據一致性,沒有鎖,很容易水平擴展。
  • 其四訂票系統應該和電子商務的訂單系統很相似,都是需要對庫存進行:1)佔住庫存,2)支付(可選),3)扣除庫存的操作。這個是需要有一致性的檢查的,也就是在併發時需要對數據加鎖的。B2C的電商基本上都會把這個事幹成異步的,也就是說,你下的訂單並不是馬上處理的,而是延時處理的,只有成功處理了,系統才會給你一封確認郵件說是訂單成功。我相信有很多朋友都收到認單不成功的郵件。這就是說,數據一致性在併發下是一個瓶頸

  • 其五鐵路的票務業務很變態,其採用的是突然放票,而有的票又遠遠不夠大家分,所以,大家才會有搶票這種有中國特色的業務的做法。於是當票放出來的時候,就會有幾百萬人甚至上千萬人殺上去,查詢,下單。幾十分鐘內,一個網站能接受幾千萬的訪問量,這個是很恐怖的事情。

    據說12306的高峰訪問是10億PV

    ,集中在早8點到10點,每秒PV在高峰時上千萬。

最後呢?12306還是做到了全球最強的客運票務系統。一貫被認為是因循守舊的國企,在選擇技術方案時放棄沿用多年的小型機/UNIX平臺去擁抱業界還是新鮮事物的基於x86/linux的大規模分佈內存數據庫系統,承受住了堪比2012年淘寶雙11的壓力。在這個領域,12306可以自豪地說自己是做的最好的案例。它還在卡,還是偶爾崩潰,頁面還是難看,可是這些遲早會改進。這個過程中也還是會有冷嘲熱諷,還是會有所謂的大牛指點江山,但最終解決春運高峰期一天數百萬張秒殺售票的,還是12306自己。

所以,走自己的路,讓別人去說吧。

寻楚之梦
2018-12-04

為什麼12306用戶體驗那麼差,而那些商業網站整天在考慮用戶體驗?因為他們的實質不一樣,就拿天貓來說,他靠什麼掙錢?他就是個平臺,靠買賣雙方的交易來掙錢,如果雙十一他癱瘓了,那他一毛錢也掙不到,可鐵路是靠12306網站來掙錢嗎?他靠賣票來掙錢,試問一下哪怕12306網站癱瘓了,是不是火車票就賣不出去了?照樣賣出去,他掙的還是那些票錢,這種本質區別情況下你讓鐵路花大量的人力、物力去優化用戶體驗,這不現實。放在私企,這種毫無利益的事他們更不會幹,你有見過哪個房地產公司把他們的網站用戶體驗做的極其好嗎?沒有人會上他們網站買房,可那些二手房租房網站比如鏈家等網站就做得好,因為他們是靠這個平臺掙錢,道理就這麼簡單

MMirror27551744
2018-09-08

謝邀,頭一回啊,不過這請人請的真是精準啊、、程序猿,正在給某國企做網站,這些老企業不是國企也都是差不多,所以說說我的感受:1.首先這些企業一定是找外包,自己是甲方很牛逼,加上背景也很牛逼,導致他們說的每一句話都很有分量,PM根本hold不住,最終結果就是大量沒用的功能往上加,稍微優化不好就卡得要死,而這種拍腦袋的需求基本不到網站快上線是不會停止的(什麼?籤要件確認需求?不,我們都是改完需求再改要件、),所以說不是設計不給力,很多功能都是這樣被客戶指導玩壞的、、2.網站樣式,別怪這些網站難看,每一個站後面都有一個(或一群)哭暈的美工,記得定需求時我們問客戶網站風格,客戶直接給了我們一個5年前的官網設計,說:就照著這樣。年輕的美工用了一些比較流行的配色和設計,最後結果是客戶用了10多條issue一點點把網站風格改了回去,美工哭暈。直到項目上線後客戶依然覺得首頁logo不太好,此時熟悉套路的美工把圖片越改越醜,終於在第7版滿意了、、3.兼容性問題,傳統大企業基本都是xp系統(推斷),所以這些網站基本是要兼容到ie8的,在各種新框架功能滿天飛的現在你只能憋著用原生js和jQuery寫一項項功能,感覺就像你有一臺機床卻只能用來固定,剩下的必須拿小錘子一下下鑿出來一樣、、其實這些企業做網站需求的就一個字,穩,誰都不想擔責任,誰都不敢當第一個創新的人,這些用著winXP的人為了穩可以放棄與時俱進,畢竟企業大風險大,所以用他們的網站,得往前倒5年,感覺還是可以接受的、

喜洋洋-喜洋洋
2018-09-22

1. 國企過去的IT系統是封閉式對內服務的系統,企業文化又以和為貴,所以改進速度,效率,用戶體驗得分偏低。2. 民企也不是個個做得好,只是做不好的民企很快被競爭對手淘汰了,能有很好口碑的,都是擅長學習和改進的,如支付寶,微信支付等,願意花很多諮詢費來學習改進。3. 客戶滿意度是一個企業真正的生命線,支付寶,微信,華為等深深明白這個道理。而老國企們對普通客戶大爺慣了。在國外五星級酒店,客戶的投訴直接記在大堂經理本上,第二天8:00總經理晨會一定會看到,總經理直接會在晨會上罵部門經理,或直接開除部門經理,後面會由部門經理和大堂經理雙線跟蹤客戶再反饋總經理,部門經理既要理順每天部門運作,又要迅速改善每天問題,而且不能重複犯錯,壓力很大,丟工作概率極高。

洋奴都是孤儿
2018-09-18

很多人也不過是隨大眾的點評一下,根本沒有獨立意識。先說12306,春運需要調動30億人次,地球才70億人,現實問題導致的數據庫結構特性,外加奸詐的黃牛惡意訪問,就春運這幾天訪問量就有淘寶+亞馬遜+谷歌+百度總和。畢竟當年IBM也參與過這個項目招標,要價10億美元不是胡亂報的。最後國內公司5000萬拿下來了,誰說自己5000萬能做好就去北京試試看,傳奇等你譜寫。

銀行,不說國資的,就是中信,浦發,平安,光大這些全民營銀行,哪個是花裡胡哨的?都跟“經典傳奇一刀99級”那畫面才叫豐富?銀行需要的本來就不是殺馬特文化,風險,安全。我想這是做金融的人永遠的乾爹媽。什麼時尚前衛夠用就行。
電信運營商這個更滑稽了,流暢度這個沒問題,再說界面,它本來就不需要提供多少信息,覆蓋區域,基本套餐資費,固網單價資費,包年資費,手機號碼資費,個人賬戶信息,包括餘額,歷史消費,通話記錄,上網記錄。也就這些信息,你還想要什麼?今天哪條街在維修?今天又有哪幾條街的井蓋被偷了?今天應聘了哪個高智商美女?你家附近基站用的什麼設備?
工業社會下很多人都有不同程度的心理健康問題,這是歷史性現象。所以他們提出的問題也是非常可笑的!!!!!!
唐朝凡
2018-09-08

世上有一種“好”叫,領導,說好就好。很多國企都是屁股決定腦袋,他們不以群眾的好為標準,而是以討好領導為目的。這是主要原因。其次,大部分國有企業競爭不夠充分,最典型的就是銀行,電信,鐵道。銀行和電信就那麼幾家公司,當發現大家都爛,都不要臉時,於是將錯就錯,隨波逐流!鐵道更牛逼,都沒有人跟我跟我競爭,那麼,我的好也是好,壞也是好,不好,您也得用!再次,大部分國企都思想僵化,決策都是領導說了算,而不是產品設計者和消費者說了算!這種特大國企,領導往往上了一定的年紀,他們對新生事物的接受程度較低,思想往往停留在過去。所以做出的網站也比較死板,呆板,難用,毫無創新。第四:服務意識薄弱,造成對網站不夠重視,人力,資金投入不足。有些時候,資金也還是夠的,可是不見了,你懂的!第五:國有企業既是企業,又是行政單位,沒有做到自負盈虧,即便虧了,也不用負很大的責任,這使他們產生了惰性思想,總認為過得去就行了!總而言之,他們不是建不出好網站,而是沒有重視,他們的思想還停留在計劃經濟時代。我們注意到,國家也正在採取措施對國有企業進行改革和完善。像鐵道行業,已經變為鐵總公司,日常經營逐漸市場化,像銀行業,國家批覆了很多私有銀行,競爭開始充分。當某一天,國企的收入真正由人民群眾,由消費者決定時,他們的憂患意識就來了。個人觀點僅供參考!謝絕轉載!

小耗子27999482
2018-09-08

BAT他們做的好是因為這是他們的工作,指望這網站賺錢呢,而其他的網站都是一個很小的部門,用來公開數據或者自助服務的,政府部門主要的業務還都是在現實中做的。舉個例子,其實BAT就像自己蓋樓賺錢,樓有問題了工程師立馬就修修補補,讓用戶滿意,否則用戶都走了,而其他政府部門只是需要用樓而不需要用樓賺錢,所以不會養那麼多蓋樓的工程師,所以政府部門的樓有點問題只能比較慢的修修補補,不會像BAT那樣養一大批工程師,畢竟政府的網站做的那麼好也沒有特別大的意義。

再說12306.因為12306網上售票成立不久,這其中的問題比較多也是能理解的,一個12306這其中的道道比淘寶要多多了,畢竟火車票這東西,可以買全程可以買半程,各種情況比較複雜,並且火車票還有高峰期,每年搶票比較厲害,不能因為從售票點轉移到網上就能解決買不到票的問題,所以大家都刷票,而刷票就會導致多少人在同時刷,這個峰值會比較高,有時候承受不了就比較麻煩,不說其他就淘寶雙十一開始的幾分鐘大家購買時候付款不也要排隊付款嗎?火車票同樣道理,不足為奇。再強大的網站也禁不住上億人同時刷不停刷。淘寶也不例外,那為什麼12306就不能被原諒呢?並且要想想淘寶每年養上萬人的網絡工程師隊伍,12306可不會專門養那麼多人的,只能合作。

风轻云淡_心如止水
2018-09-08

曾經上線的時候很難用。不說體驗性,這個眾口難調,確實體驗性很差,各種驗證,各種密碼。現在就網速來說,還好了。比如12306春運前上線,直接擠癱瘓,全國怨聲載道,後來鐵道部,現在的鐵路總公司租用了阿里巴巴的雲服務器,再也沒發生過這種情況。國企繁瑣的審批流程和僵硬的管理制度決定了效率和體驗性,你不能說國企的管理層學歷和水平比私企低,但態度決定了結果。你讓通訊和鐵路私有化試試,國內的巨無霸私企分分鐘把聯通,鐵總幹破產。快遞行業已經凸顯,EMS還有多少人在用?但偏遠地方你還真得用EMS,因為其他快遞公司送不到。國企正在不斷的改善,越來越重視用戶,這是好事,希望大家不要以偏概全,給點耐心,我們國家會越來越好。

科技汇谈
2018-09-07

作為國有企業他們所服務的範圍是面對全國性的,標題所說難用應該從哪一方面說清來!如說外觀設計來看,應該比普通網站要好,不知道所說的難用是不是說慢、不進去,這個就好解答了:

1、12306、銀行、電信等網站他們面對的群裡不同,全同有那麼多用戶,這好比是一對多的服務,所以服務器集群受到很大壓力;

2、這些國企單元,他們每花一分錢都得上國家上報,在投次方面確實不如民企,所以先以夠用為主,不足再後期改進的方案;

3、在我看來,三個面最難用的應該是電信運營商吧,方案設計不說,但服務的東西沒有幾個實質的,有了什麼問題還是要打電話、去營業廳,官網中一種擺設;

4、個人感覺,難用一詞用得有點過了,這個要來個投票,不能以個人的偏出發;

相關推薦

推薦中...