2013年11月18日 星期一

一至千萬的藝術 — 如何養成支撐網路巨量交易的伺服器艦隊

一至千萬的藝術 — 如何養成支撐網路巨量交易的伺服器艦隊

淘寶網近日創下天文數字的成交金額。除了震撼,許多人多少會好奇淘寶網如何完成海量資料的處理。筆者身為工程師,想從淺顯易懂的角度帶領讀者瞭解像這樣的電子商務網站,通常是如何從小規模,一步一步的演變至今天的驚人海量地步。

停機一天都受不了


對於淘寶或 Amazon 這樣的大型網路,只要停機一下子所造成的損失可能都是以億計算。現今開發網路服務,必須考量三樣重要因素:可靠性(Reliability)、可得性(Availability)、擴展性(Scalability)。
可靠性是指一個服務運行期間出現錯誤的狀況。擴展性是指這一個網路服務,可以透過增加主機數量台提升整體的承載能力。
可得性是指服務保持在線上可以使用的狀態所佔的時間比例,一般常用幾個 9 來表示。例如一個網站在一個月裡有 1% 的時間發生當機的話,我們就稱它的可得性在這段期間是 99%。如果只有 0.1% 的時間離線,那它的可得性就是 99.9%。可得性每增加一個 9 的代價都十分昂貴,每多一個 9 的成本甚至是以指數的型式成長。知名程式開發協作平台 Github 的狀態頁面上就顯示了它在特定時間內的可得性和可靠性。
一個團隊的技術功力可以從可得性和擴展性看出端倪。這牽涉到了伺服器艦隊(fleet)的架構設計;好的設計師能設計良好的系統架構,達成高度擴展性和可得性。
以下我們從簡入繁,想像一個電子商務網站從剛出生時,隨著流量成長,如何透過伺服器的架構設計逐步承載越來越多的使用量。

艦隊的第一艘船


一般網站在草創期間,使用量不大,基於成本考量往往會把網頁應用伺服器(Web Application Server)和資料庫伺服器(Database server)放置於同一台主機上,如下圖:
這種架構能勉強支撐十萬至數十萬等級的使用者。實際能承受的量依照機器硬體的等級而定。然而硬體的等級不管如何提升,終究有一定的上限。屆時,當承載量再次增加,問題就會顯露無遺。在專業術語上我們稱之為瓶頸(Bottleneck)。
這就像當台北捷運所有線路都交會於台北車站一個點時,台北車站就是瓶頸。整個捷運系統的承載量會因為這一個單點而受到限制。就像下面的「模擬都市」遊戲截圖所示,一條馬路不管有多少線道。當其中有一個窄口,整條馬路的流量都會受限於窄口。


另一個更嚴重的名詞叫失效單點(Single point of failure),也就是說當這一台機器故障就會造成整個服務停擺。目前的單一主機就是這樣的一個點。

各司其職


當網頁伺服器和資料庫共用一台主機,等於在競爭同一台主機的資源。為了分散負荷,一般都會將網頁伺服器和資料庫獨立放到不同的主機上。
然而這只稍微爭取到了一點喘息的空間,當使用量一多,很快又會填滿單一台機器的承載限制

艦隊添購新船


隨著使用量的增加,是時候擴充鑑隊規模了。為了讓網頁應用伺服器能夠處理大量請求,因此會增設多台網頁應用伺服器。但這產生了一個問題,因為使用者只認得一個網址,為了讓連線到同一個網址的請求分配到不同主機上,還得在前面擺一個「負載平衡器」(Load balancer)。
負載平衡器的運作原理就像大家平常去銀行或郵局,窗口一字排開。每個人進去先領一個號碼,當叫到自己號碼時就到對應窗口去,透過這種方式把用量平均散到所有的應用伺服器上。
當走到這一步,大約的承載能力大略可以突破百萬使用者。但從圖中相信讀者也可以看出,資料庫只有一台,因此成為了新的瓶頸。當這台伺服器來不及處理讀取或寫入資料的請求時,前端有再多的網頁應用伺服器也沒有用。

讀寫分離


為了減輕資料庫的負擔,接著要引入一個概念 –「讀寫分離」。資料庫面對的有讀取和寫入兩種請求。當網頁應用程式要顯示商品資訊,它就得向資料庫送出讀取請求;當有使用者購買商品時,才需要寫入。
電子商務網站的使用者逛的次數遠大於買的次數,也就是讀取數量遠大於寫入。針對這個特性,我們可以增設多台只供讀取不供寫入的次要資料庫,它們的資料都從主要的資料庫複製而來。當網頁應用伺服器遇到商品資訊讀取時就向次要資料庫請求,當遇到購物等需要寫入時才向主要伺服器請求。如此一來最大宗的讀取壓力被分散到多台的次要資料庫身上,解決了瓶頸的問題。
走到這一步,大略的承載能力可能落在數百萬的數量級。

資料庫碎片


事情似乎很美好。但不幸的是當購物量也不停增加時,主要的資料庫還是很快會成為瓶頸。除此之外,若主要資料庫一旦當機,也會造成購物無法進行,形成了失效單點。
為了解決此問題,在此時一般會引入資料庫的碎片(Shrading)技術。簡單的來說,將大量的資料分成一小群一小群,分別塞到不同的資料庫主機裡,當要查詢或寫入時,再看這一筆資料落在哪一台機器裡。
當走到這一步,整體艦隊的承載能力已經可以達到千萬等級了。
然而資料庫碎片雖然可以分散承載量到不同的機器,卻也增加了應用程式的難度與複雜度。有些企業會用 NoSQL 而非用碎片來解決這類問題,例如CassandraHBase;也有人自行發展技術來處理這部份的問題。

冰山一角


講到這裡,這趟旅程其實離走完還有一段很長的路。
上述的過程雖然未必精準的描述了淘寶網或類似網站的架構成長,但相信至少在讀者心中建立一個網站一步步提升承載能力的概念與想像。當然這過程省略、簡化了許多細節,例如負載平衡器本身也是一個瓶頸,可以使用 DNS 負載平衡器來解決;或是細部上可透過 CDN(Content Deliever Network)來分佈靜態資源檔,降低艦隊的壓力;伺服器出錯、甚至資料中心出狀況也還沒詳細考量進來;以及使用快取伺服器(Cache server)取代資料庫等手法。
上述所列的是主流解法,遇到不同類形的需求得想出不同的對應方法。有時改變商務流程也不失為解決方法之一。網站的成長並非只在承載量,服務的數量與複雜程度也會隨時間成長,要如何將不同的服務獨立出來也並不簡單。同時,當架構改變,如何將對使用者的衝擊過降至最小也是一門藝術。
當承載需求再提昇,除了使用現成的解決方案,可能還要自行研發一整套針對某個問題的解決方案,例如淘寶網就大方的開源分享了其中一些專案。這些其實體現了現今兩岸網路軟體界技術能量的差距。對淘寶網的發展歷史有進一步興趣的讀者可以參考以下一系列文章:
或是這一篇
有趣的是,淘寶在增加負載量的過程中同時採用了硬體和商業的解決方案。後來雖然提升了承載能力一段時間,旦很快的發現這些昂貴的硬體和商用資料庫反而變成繼續擴展的瓶頸,因此最後轉向純軟體的開源解決方案,顯示了業界從商業用軟硬體的解決方案轉向純軟體解決方案的風向。
除此之外讀者也可以參考美國歐巴馬在 2012 年競選總統時,其背後規模宏大的伺服器艦隊架構圖
2008 歐巴馬選總統時的伺服器艦隊的一部分。圖片來源:awsofa

紮穩馬步,再戰十年


身為一個技術人員我懂得不多,但是我看到了問題,並且有一點想法與心得。軟體的開發就像紮馬步,在全世界的所有產業都被軟體和網路所劇烈改變的當下,需要把基本功練好才能應戰。
因此我寫了一本書叫做「台灣軟體產業的失落十年」,其中所指的軟體產業的範圍包括網路產業。失落十年的意涵是指落後國外十年的技術、觀念與各種不同的面向。這本書不只寫給技術人看,也希望對於管理者或決策者有一些幫助。過一陣子就會上架,歡迎有興趣的讀者前往購買
 –>想推廣優質好書,請投稿給擁有最優質讀者的有物報告!contact@yowureport.com。沒有的話就加入有物粉絲團或 Twitter 吧。

2013年11月16日 星期六

LINE詐騙訊息 你不能相信的10句話

LINE詐騙訊息 你不能相信的10句話

「李○○,這是上次聚會照片,你好好笑喔!」台南李姓男子收到LINE訊息,以為大學同學傳來照片,點了網址卻是下載惡意程式;對方取得他手機「最高權限」,利用手機小額付款購買遊戲點數後換取現金,李在月底收到帳單才發現被騙。
八月出現的LINE詐騙,短短三個月竟騙了全台六百七十四人,且六成受害者有大學以上學歷;雖然詐騙金額不高,但辦案人員仍形容「比搶銀行還可怕」。
辦案人員發現,LINE詐騙訊息常用的生活用語多達十種,包括「這是你那晚沒來的照片,我被整慘了…」、「我在墾丁拍的照片,你覺得哪張最好看。」後面都附有連結,點入後就上當受騙。
警政署統計,八月開始出現LINE詐騙手法,八月時只有十二人被騙,十月被害人暴增至四百四十六人,十一月的第一周有一百五十一人上當;被騙金額一百元到三萬元不等,三個月有六百七十四人被騙了一百七十七萬元。
受害者超過六成是大學以上學歷;其中一成是碩士,比國、中小學歷的受害者加起來還高。辦案人員說,學歷高者使用智慧型手機比率很高,「依賴網路越重,越容易被騙!」除了軍公教人員被騙,從事資訊科技人員也有四十多人上當,可見這種利用「人性」的騙術很高招。
警方說,目前能植入木馬程式的都是Android作業系統;電信小額付款雖定有上限,但沒限定一天使用幾次,有被害人一天損失三萬元,提醒民眾注意。

2013年11月7日 星期四

黃金 - Yahoo奇摩 搜尋結果: 黃金價格連跌7日 創下今年5月以來最長跌勢

黃金 - Yahoo奇摩 搜尋結果
黃金 - Yahoo奇摩 搜尋結果 // via fulltextrssfeed.com 
黃金價格連跌7日 創下今年5月以來最長跌勢
Nov 8th 2013, 01:34

好房News編輯中心/整理報導

黃金價格果然提前遇到了寒冬!因為印度排燈節已接近尾聲,但是這個黃金需求高峰期的節日,對於印度珠寶商來說,今年是個災難,黃金銷售情況很不樂觀。若是加上美國上月服務業活動步伐加快影響,金價已經連續7個交易日下跌,這個跌勢是2013年5月中以來黃金價格最長的跌市,只有美銀美林判定,2014年之前縮減量化寬鬆政策的可能性不大,投資者或會重投黃金懷抱。

觀察本週金價走勢,顯示美國聯準會利率會議市場解讀,幾乎倒對金價較不利的那一面,金價周三從高點1360美元掉到1334美元,紐約12月期金收市報每盎司1308.1美元,跌6.6美元,現貨金在1312美元左右,出現了7個交易日下跌,累計跌幅3%,是5月中以來最長跌市,頗有有短線利多出盡的味道,黃金ETF也是呈現賣比買多,雖然上周二曾經出現流入,但整體還是流出,且流出速度還有加快跡象。

不過從美銀美林的報告,則還是對金價懷有希望,分析師依然看好黃金的長期走勢,主要是美銀美林研判:對黃金基本層面展望並沒有改變,我們認為黃金的下行壓力有限,美聯儲於2014年之前縮減量化寬鬆政策的可能性不大,因此投資者或會重投黃金懷抱。

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions

黃金 - Yahoo奇摩 搜尋結果: 貴金屬盤後─中國製造業數據轉佳 黃金收高16.30美元

黃金 - Yahoo奇摩 搜尋結果
黃金 - Yahoo奇摩 搜尋結果 // via fulltextrssfeed.com 
貴金屬盤後─中國製造業數據轉佳 黃金收高16.30美元
Oct 24th 2013, 20:12

黃金期貨今日上漲逾1%,並創逾五周收盤高點。

中國10月製造業數據上升至七個月新高,帶來利多。

紐約12月黃金上漲16.30美元,或1.2%,收於每盎司1350.30美元。

周三,12月黃金下跌8.60美元,或0.6%,收於每盎司1334美元。

分析師說,中國製造業數據顯示經濟復甦轉佳,對黃金需求屬利多,中國是黃金最大消費國之一。

HSBC公布,中國10月製造業採購經理指數初值上升至50.9,創七個月高點,9月終值為50.2。

黃金周四突破1345美元壓力,有助提供進一步支撐。

美元今日表現疲弱,亦屬黃金市場利多。

ICE美元指數下跌至79.173,周三尾盤為79.270。

歐元上漲0.3%至1.3808美元。

其他金屬亦隨黃金走高,僅12月銅下跌不及0.5美分,收於每磅3.26美元。

12月白銀上漲21美分,或0.9%,至每盎司22.82美元。

1月白金收於每盎司1456.20美元,上漲16.60美元,或1.2%。

12月鈀金上漲1.70美元,或0.2%,至每盎司747.80美元。

其他經濟消息方面,歐元區10月私人企業成長速度減緩。

在美國,10月19日結束的一周,初次申請失業金人數減少1.2萬至35萬人。

Markit公司公布10月製造業採購經理指數初值下降至51.1,創一年低點,9月為52.8。

分析師說,亞洲的黃金需求蓋過了SPDR基金的賣壓,對黃金與白銀屬利多。

本周以來,黃金上漲約2.5%,白銀大漲近4%。

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions

2013年11月3日 星期日

黃金 - Yahoo奇摩 搜尋結果: 黃金「蟹腳」最精華! 油炸鎖住鮮甜

黃金 - Yahoo奇摩 搜尋結果
黃金 - Yahoo奇摩 搜尋結果 // via fulltextrssfeed.com 
Eventbrite makes it happen

Create an event and sell tickets online through Eventbrite. It's simple! Sign up and get started today.
From our sponsors
黃金「蟹腳」最精華! 油炸鎖住鮮甜
Nov 3rd 2013, 05:45

秋天吃蟹,有一種黃金蟹台灣並沒有養殖,都是從北美進口,價格不便宜,卻吸引許多老饕,就是在於牠的精華蟹腳,簡單料理過後就能吃出鮮甜Q彈的口感。

活跳跳的黃金蟹從水裡撈起,八隻腳不安分的亂踢,可見小傢伙的腳力有多驚人。師傅抓起黃金蟹,熟練的將蟹腳分開,這就是牠精華所在,最適合黃金蟹的料理方式就是用油炸,不只能鎖住蟹肉的鮮甜,還能讓肉質更加Q彈。

熱好的油鍋冒著白煙,師傅將黃金蟹裹上太白粉,再一口氣送進油鍋,接著翻動使每個部分都能均勻受熱,反覆用手指試溫度,確認熟度之後再用大杓撈起搭配醬汁,快火翻炒,起鍋後配上精緻擺盤,一道銀絲卷炸黃金蟹大功告成。

油炸過後的黃金蟹還能搭配麵食、蘑菇、鮮蝦,創意吃法讓口感擁有更多層次,另外用清蒸的方式,搭配檸檬汁,就能品嘗出黃金蟹最原始的鮮甜。

黃金蟹料理吃法多樣,清、蒸、油、炸都行,雖然是從國外進口,但是到了老饕嘴裡都一樣,好吃最重要。

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions

2013年11月1日 星期五

黃金 - Yahoo奇摩 搜尋結果: 貴金屬盤後─美元兌歐元上漲 黃金收低10.50美元 本周下跌近3%

黃金 - Yahoo奇摩 搜尋結果
黃金 - Yahoo奇摩 搜尋結果 // via fulltextrssfeed.com 
Geek Squad from Best Buy

Get instant online support. We can fix computers, cameras, car technology and more. Talk to us today.
From our sponsors
貴金屬盤後─美元兌歐元上漲 黃金收低10.50美元 本周下跌近3%
Nov 1st 2013, 20:57

黃金期貨周五收低,本周下跌近3%。

美元兌歐元上漲,使得黃金價格下跌,並創10月中以來最低收盤水準。

歐元區通貨膨脹偏低,促使投資人預期歐洲央行將降低利率,美元兌歐元因而上漲。

紐約12月黃金下跌10.50美元,或0.8%,收於每盎司1313.20美元。

本周下跌2.9%,並創10月16日以來最低收盤水準。

分析師說,黃金進一步跌破1320美元支撐,迅速接近1300美元關卡。

黃金近來上漲突破1350美元,結果只是另一次假突破,1300美元似乎仍具磁鐵吸力。

周四,黃金下跌近2%,聯準會周三決議維持購債速度不變,但減碼QE計劃仍並未排除,為黃金利空。

12月白銀收低3美分,或0.1%,至每盎司21.84美元。

本周下跌約3.5%。

美元兌大多外幣上漲,尤其兌歐元,使得以美元計價商品,如黃金,對持有其他貨幣的投資人而言,變得更貴。

分析師說,近幾個交易日,美元十分強勁,為黃金帶來壓力。

美元指數上漲至80.727,周四尾盤為80.221。

歐元下跌至1.3493元,周四尾盤為1.3587。

周四數據顯示,歐元區10月通貨膨脹下降至近四年低點,促使投資人預期歐洲央行將會降息。

美國供應管理協會(ISM)公布10月製造業指數上升至56.4%,創2011年4月以來高點。

該數據公布後,黃金價格進一步下跌。

分析師說,ISM製造業數據顯示,美國經濟持續改善,投資人認為應將資金置於成長股,而非避險的黃金。

其他金屬方面,7月白金上漲3.50美元,或0.2%,至每盎司1451.90美元,本周下跌約0.3%。

12月鈀金上漲1.45美元,或0.2%,至每盎司738.25美元,本周下跌約1.3%。

12月銅收於每磅3.30美元,下跌近0.5美分,或0.1%。

本周則上漲0.9%。

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions

黃金 - Yahoo奇摩 搜尋結果: 貴金屬盤後─美元兌歐元上漲 黃金收低10.50美元 本周下跌近3%

黃金 - Yahoo奇摩 搜尋結果
黃金 - Yahoo奇摩 搜尋結果 // via fulltextrssfeed.com 
See Everything

Complete collection, extension, and big data analysis of all metrics across your environment. Get started for free.
From our sponsors
貴金屬盤後─美元兌歐元上漲 黃金收低10.50美元 本周下跌近3%
Nov 1st 2013, 19:43

黃金期貨周五收低,本周下跌近3%。美元兌歐元上漲,使得黃金價格下跌,並創10月中以來最低收盤水準。

歐元區通貨膨脹偏低,促使投資人預期歐洲央行將降低利率,美元兌歐元因而上漲。

紐約12月黃金下跌10.50美元,或0.8%,收於每盎司1313.20美元。本周下跌2.9%,並創10月16日以來最低收盤水準。

分析師說,黃金進一步跌破1320美元支撐,迅速接近1300美元關卡。黃金近來上漲突破1350美元,結果只是另一次假突破,1300美元似乎仍具磁鐵吸力。

周四,黃金下跌近2%,聯準會周三決議維持購債速度不變,但減碼QE計劃仍並未排除,為黃金利空。

12月白銀收低3美分,或0.1%,至每盎司21.84美元。本周下跌約3.5%。

美元兌大多外幣上漲,尤其兌歐元,使得以美元計價商品,如黃金,對持有其他貨幣的投資人而言,變得更貴。

分析師說,近幾個交易日,美元十分強勁,為黃金帶來壓力。

美元指數上漲至80.727,周四尾盤為80.221。歐元下跌至1.3493元,周四尾盤為1.3587。周四數據顯示,歐元區10月通貨膨脹下降至近四年低點,促使投資人預期歐洲央行將會降息。

美國供應管理協會(ISM)公布10月製造業指數上升至56.4%,創2011年4月以來高點。該數據公布後,黃金價格進一步下跌。

分析師說,ISM製造業數據顯示,美國經濟持續改善,投資人認為應將資金置於成長股,而非避險的黃金。

其他金屬方面,7月白金上漲3.50美元,或0.2%,至每盎司1451.90美元,本周下跌約0.3%。12月鈀金上漲1.45美元,或0.2%,至每盎司738.25美元,本周下跌約1.3%。

12月銅收於每磅3.30美元,下跌近0.5美分,或0.1%。本周則上漲0.9%。

You are receiving this email because you subscribed to this feed at blogtrottr.com.

If you no longer wish to receive these emails, you can unsubscribe from this feed, or manage all your subscriptions