每次演唱會搶票,造成「系統大當機」他們是用什麼電腦系統呢?

光一個淘寶就有破2000位工程師
這比台灣很多大型公司人數都還多了
大陸現在的經濟發展真可怕
完全打趴台灣

hsiang11 wrote:
光一個淘寶就有破20...(恕刪)

是的.
鬼島繼續喝餿水.
PDA&MAC新手 wrote:
一年這種搶票當機的次...(恕刪)


我不太懂電腦,可是我認為如果你能提供比別人強大的服務,

把現有缺陷補起來,廠商知道你比別家做更好,

自然生意就會上門,不要想每年只有幾次秒殺演唱會,

全部演唱會購票都找你配合,因為你系統穩定,別人做不到,

除了購票系統,也能再整合其他服務,未來有更多需要在網路平台搶的東西,

如果市場上大家覺得這方法不可行,但必須改善,

公司願意改善,生意自然會上門。


PDA&MAC新手 wrote:
一年這種搶票當機的次...(恕刪)

月薪22元 wrote:
我不太懂電腦,可是我...(恕刪)


老闆常說..
"要賺錢不外乎...一, 增加收入...二, 減少支出"


可是我觀察下來, 我們老闆只會作後者.

月薪22元 wrote:
如果市場上大家覺得這方法不可行,但必須改善,
公司願意改善,生意自然會上門。


台灣的經營者,通常是先弄一套最便宜的,看起來能動的就上線了,
接下來各種bug就靠客服和嘴炮硬撐,撈完第一票之後就放著爛。

投資一定有風險,基金投資有賺有賠,申購前應詳閱公開說明書。 自殺不能解決問題,勇敢求救並非弱者,生命一定可以找到出路。 有病要治,藥要按時吃。Allah-u
分散式運算叢集系統,首要條件就是必須使用自由軟體的作業系統,如:Linux、FreeBSD ...等等

因為:

1) 免費,大量的伺服器,才能節約成本

像台灣很多售票系統用 Windows server 的,一台的授權金要 2~3萬元,就相當於已經是購買一台伺服器機器的硬體費用。

如果 windows server 的機器有 30台,改用自由軟體 OS,省下的授權金,夠再添購 30台變 60台。

2) 開放原始碼,才有可能自行修改程式碼,做出獨特、想要的功能

封閉專利的 OS,如 windows 整個運作就是一個黑盒子,裡面核心、軟體的原始碼,不可知,也無法修改。想優化核心什麼的,也是不可能的。

而自由軟體 OS,如果對它的功能、性能不滿意,或者發現有什麼 BUG。可以馬上動手修改原始碼。

優化核心,可重新編譯 kernel 核心原始碼,只加入必要的模組,並修改最佳運行參數。


這就是國際大企業,如 Google、掏寶...等等,都採用 Linux 的原因。


***************************************

Google 伺服器:
(圖片來源:網路搜尋的)





這樣陽春土砲的東西,膠帶粘一粘的,很難想像是國際級大企業的伺服器吧。





Google 的伺服器主機(一個基本運算單位),真的就是那樣簡陋,直接擺上自制的鐵架。

省下貴鬆鬆的機殼費用、機架費用。

好看能吃嗎,省錢實用才是王道,且裸著用,散熱也更好。


Google 採用的是 "人海戰術"(分散式運算,叢集系統)

不追求一台昂貴的超級電腦。而是用數量龐大的廉價主機,去搭出一個整體運算系統。

即古人說的:三個臭皮匠,勝過一個諸葛亮。

買 1個諸葛亮的錢,夠買 9個臭皮匠。而 3個臭皮匠就抵1個諸葛亮,那當然是買臭皮匠比較划算。

人海戰術有個缺點就是:吃飯量大,耗電量大。佔用的土地空間也大。

但相對於節省下來的硬體售價,如果夠支付幾十年電費、廠房租金,那仍是划算的。

尤其在雲端服務萌芽階段,有效 Cost-down 降低成本,打敗競爭對手,確保未來的龍頭地位,這是相當重要的。

而這也只有叢集系統(人海戰術)才能辦到,如果一開始就走精兵政策,採買巨貴的單一超級電腦。可能早就破產,或被打敗。



近來世界 500大 超級電腦,有 80% 以上,都是叢集系統的。有 95% 使用 Linux 為 OS。

例如:日本的京




中國的天河二號



其實這種超級電腦,講白就是一個機房。

它本身並不是 "一台" 電腦主機。

而是由數量很龐大的低價主機,去叢集組成一個整體運算單元,一個機房、電算中心。
fedora wrote:
分散式運算叢集系統,...
2) 開放原始碼,才有可能自行修改程式碼,做出獨特、想要的功能...(恕刪)


不只是 opensource 的 OS, database 可以改, 掌握 filesystem 和 database 的原始碼技術之後, 還可以從軟體端向下延伸訂製硬體, 像是 SSD firmware, NIC 甚至 CPU 都可以針對自己的需求設計, 只要經濟規模足夠.

像前面我貼的 kernel.taobao.org 就有資訊提到淘寶雲端伺服器的 SSD 是和 FusionIO 配合, firmware 有針對淘寶要求再客製化過. 如果我門搞不懂 filesystem 和 database 甚至 VM, 怎麼可能跟SSD廠商說你要客製化什麼東西出來?

淘寶的整套雲架構也使用到阿里雲, 和亞馬遜的EC2一樣是可以出租運算能量給其他公司使用.
hsiang11 wrote:
光一個淘寶就有破2000位工程師
這比台灣很多大型公司人數都還多了
大陸現在的經濟發展真可怕
完全打趴台灣...(恕刪)


大陸的市場規模太大了,35個省份,10多億人口

目前地球上,全世界 72億人口,有 1/7 就在中國大陸。

掏寶之於中國,就好像亞馬遜之於美國那樣子。

台灣終究只是一個大型島嶼,本土市場太小了,要發展雲端經濟,擴展到全世界才對。

無奈政府沒有遠見,加上一些財團壟斷,網路實在太糟糕,雲端經濟發展不起來。


smallbeetw wrote:
不只是 opensource 的 OS, database 可以改, 掌握 filesystem 和 database 的原始碼技術之後, 還可以從軟體端向下延伸訂製硬體, 像是 SSD firmware, NIC 甚至 CPU 都可以針對自己的需求設計, 只要經濟規模足夠...(恕刪)


看 mysql.taobao.org,原來掏寶是用 MySQL 當資料庫的,只是不知道用免費版本還是付費版本的。

這樣看來 MySQL 也真是夠強大的,能應付幾億人連線的需求。不過應該有經過特殊架構,分散式的資料庫。

前面有網友提到 TFS 檔案系統,很懷疑是真的存在的嗎?

猜測應該是現有的 ZFS 什麼的,改個名字而已。

fedora wrote:
大陸的市場規模太大了...(恕刪)


我猜是改HDFS的...

fedora wrote:
前面有網友提到 TFS 檔案系統,很懷疑是真的存在的嗎?(恕刪)

http://tfs.taobao.org/

簡介

TFS(Taobao !FileSystem)是一個高可擴展、高可用、高性能、面向互聯網服務的分佈式文件系統,主要針對海量的非結構化數據,它構築在普通的Linux機器集群上,可為外部提供高可靠和高並發的存儲訪問。TFS為淘寶提供海量小文件存儲,通常文件大小不超過1M,滿足了淘寶對小文件存儲的需求,被廣泛地應用在淘寶各項應用中。它採用了HA架構和平滑擴容,保證了整個文件系統的可用性和擴展性。同時扁平化的數據組織結構,可將文件名映射到文件的物理地址,簡化了文件的訪問流程,一定程度上為TFS提供了良好的讀寫性能。
TFS的總體結構

一個TFS集群由兩個!NameServer節點(一主一備)和多個!DataServer節點組成。這些服務程序都是作為一個用戶級的程序運行在普通Linux機器上的。

在TFS中,將大量的小文件(實際數據文件)合併成為一個大文件,這個大文件稱為塊(Block), 每個Block擁有在集群內唯一的編號(Block Id), Block Id在!NameServer在創建Block的時候分配, !NameServer維護block與!DataServer的關係。Block中的實際數據都存儲在!DataServer上。而一台!DataServer服務器一般會有多個獨立!DataServer進程存在,每個進程負責管理一個掛載點,這個掛載點一般是一個獨立磁盤上的文件目錄,以降低單個磁盤損壞帶來的影響。

!NameServer主要功能是: 管理維護Block和!DataServer相關信息,包括!DataServer加入,退出, 心跳信息, block和!DataServer的對應關係建立,解除。正常情況下,一個塊會在!DataServer上存在, 主!NameServer負責Block的創建,刪除,複製,均衡,整理, !NameServer不負責實際數據的讀寫,實際數據的讀寫由!DataServer完成。

!DataServer主要功能是: 負責實際數據的存儲和讀寫。

同時為了考慮容災,!NameServer採用了HA結構,即兩台機器互為熱備,同時運行,一台為主,一台為備,主機綁定到對外vip,提供服務;當主機器宕機後,迅速將vip綁定至備份!NameServer,將其切換為主機,對外提供服務。圖中的HeartAgent就完成了此功能。



TFS的塊大小可以通過配置項來決定,通常使用的塊大小為64M。TFS的設計目標是海量小文件的存儲,所以每個塊中會存儲許多不同的小文件。!DataServer進程會給Block中的每個文件分配一個ID(File ID,該ID在每個Block中唯一),並將每個文件在Block中的信息存放在和Block對應的Index文件中。這個Index文件一般都會全部load在內存,除非出現!DataServer服務器內存和集群中所存放文件平均大小不匹配的情況。

另外,還可以部署一個對等的TFS集群,作為當前集群的輔集群。輔集群不提供來自應用的寫入,只接受來自主集群的寫入。當前主集群的每個數據變更操作都會重放至輔集群。輔集群也可以提供對外的讀,並且在主集群出現故障的時候,可以接管主集群的工作。
平滑擴容

原有TFS集群運行一定時間後,集群容量不足,此時需要對TFS集群擴容。由於DataServer與NameServer之間使用心跳機制通信,如果系統擴容,只需要將相應數量的新!DataServer服務器部署好應用程序後啟動即可。這些!DataServer服務器會向!NameServer進行心跳匯報。!NameServer會根據!DataServer容量的比率和!DataServer的負載決定新數據寫往哪台!DataServer的服務器。根據寫入策略,容量較小,負載較輕的服務器新數據寫入的概率會比較高。同時,在集群負載比較輕的時候,!NameServer會對!DataServer上的Block進行均衡,使所有!DataServer的容量儘早達到均衡。

進行均衡計劃時,首先計算每台機器應擁有的blocks平均數量,然後將機器劃分為兩堆,一堆是超過平均數量的,作為移動源;一類是低於平均數量的,作為移動目的。

移動目的的選擇:首先一個block的移動的源和目的,應該保持在同一網段內,也就是要與另外的block不同網段;另外,在作為目的的一定機器內,優先選擇同機器的源到目的之間移動,也就是同台!DataServer服務器中的不同!DataServer進程。
當有服務器故障或者下線退出時(單個集群內的不同網段機器不能同時退出),不影響TFS的服務。此時!NameServer會檢測到備份數減少的Block,對這些Block重新進行數據複製。

在創建複製計劃時,一次要複製多個block, 每個block的複製源和目的都要儘可能的不同,並且保證每個block在不同的子網段內。因此採用輪換選擇(roundrobin)算法,並結合加權平均。

由於DataServer之間的通信是主要發生在數據寫入轉發的時候和數據複製的時候,集群擴容基本沒有影響。假設一個Block為64M,數量級為1PB。那麼NameServer上會有 1 * 1024 * 1024 * 1024 / 64 = 16.7M個block。假設每個Block的元數據大小為0.1K,則佔用內存不到2G。
存儲機制

在TFS中,將大量的小文件(實際用戶文件)合併成為一個大文件,這個大文件稱為塊(Block)。TFS以Block的方式組織文件的存儲。每一個Block在整個集群內擁有唯一的編號,這個編號是由NameServer進行分配的,而DataServer上實際存儲了該Block。在!NameServer節點中存儲了所有的Block的信息,一個Block存儲於多個!DataServer中以保證數據的冗餘。對於數據讀寫請求,均先由!NameServer選擇合適的!DataServer節點返回給客戶端,再在對應的!DataServer節點上進行數據操作。!NameServer需要維護Block信息列表,以及Block與!DataServer之間的映射關係,其存儲的元數據結構如下:



在!DataServer節點上,在掛載目錄上會有很多物理塊,物理塊以文件的形式存在磁盤上,並在!DataServer部署前預先分配,以保證後續的訪問速度和減少碎片產生。為了滿足這個特性,!DataServer現一般在EXT4文件系統上運行。物理塊分為主塊和擴展塊,一般主塊的大小會遠大於擴展塊,使用擴展塊是為了滿足文件更新操作時文件大小的變化。每個Block在文件系統上以「主塊+擴展塊」的方式存儲。每一個Block可能對應於多個物理塊,其中包括一個主塊,多個擴展塊。
在DataServer端,每個Block可能會有多個實際的物理文件組成:一個主Physical Block文件,N個擴展Physical Block文件和一個與該Block對應的索引文件。Block中的每個小文件會用一個block內唯一的fileid來標識。!DataServer會在啟動的時候把自身所擁有的Block和對應的Index加載進來。
容錯機制

集群容錯

TFS可以配置主輔集群,一般主輔集群會存放在兩個不同的機房。主集群提供所有功能,輔集群只提供讀。主集群會把所有操作重放到輔集群。這樣既提供了負載均衡,又可以在主集群機房出現異常的情況不會中斷服務或者丟失數據。

!NameServer容錯

Namserver主要管理了!DataServer和Block之間的關係。如每個!DataServer擁有哪些Block,每個Block存放在哪些!DataServer上等。同時,!NameServer採用了HA結構,一主一備,主NameServer上的操作會重放至備NameServer。如果主NameServer出現問題,可以實時切換到備NameServer。
另外!NameServer和!DataServer之間也會有定時的heartbeat,!DataServer會把自己擁有的Block發送給!NameServer。!NameServer會根據這些信息重建!DataServer和Block的關係。

!DataServer容錯

TFS採用Block存儲多份的方式來實現!DataServer的容錯。每一個Block會在TFS中存在多份,一般為3份,並且分佈在不同網段的不同!DataServer上。對於每一個寫入請求,必須在所有的Block寫入成功才算成功。當出現磁盤損壞!DataServer宕機的時候,TFS啟動複製流程,把備份數未達到最小備份數的Block盡快複製到其他DataServer上去。 TFS對每一個文件會記錄校驗crc,當客戶端發現crc和文件內容不匹配時,會自動切換到一個好的block上讀取。此後客戶端將會實現自動修復單個文件損壞的情況。
並發機制

對於同一個文件來說,多個用戶可以並發讀。
現有TFS並不支持並發寫一個文件。一個文件只會有一個用戶在寫。這在TFS的設計裡面對應著是一個block同時只能有一個寫或者更新操作。
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!