iT邦幫忙

0

知名網站所使用的架構平台

請問各位. 台灣的一些知名網站像是pchome, 露天拍賣網. 美國的ebay, facebook 這些網站有沒有使用什麼有名的平台為基礎然後在上面做開發? 不然我有時候想, 這些網站的架構都是很複雜,如果從零到現在中間的使用邏輯性不知道要花費多少的時間跟錢. 感覺不比寫一個microsoft office簡單. 這樣他們因該有使用什麼可套用的軟體來作為開發基礎才對.

另外, 各位如果想要開發想這些知名網站一樣復雜的網站需要注意哪一些東西, 和方法?

看更多先前的討論...收起先前的討論...
rochuang提到:
這些網站有沒有使用什麼有名的平台為基礎然後在上面做開發?


這麼晚睡不著
問這種問題?

可能要請你先寫出幾個你認為有名的平台
然後邦友才能回答這些知名網站有沒有使用?
rochuang iT邦新手 5 級 ‧ 2010-08-30 00:08:06 檢舉
我已經寫了, 你是沒在讀喔.
player iT邦大師 1 級 ‧ 2010-08-30 04:10:19 檢舉
稍微翻了一下

1.資料庫叢集架構
2.網頁快取機制
3.便宜的主機+Linux或FreeBSD
4.使用小資料,資料庫快取,不要工作在資料庫...
5.工作佇列, 與負載平衡....

滿多東西的
但是除非是願意燒錢的公司
要做數萬人以上流量的網站
不然應該不用做到這種程度
沒看錯的話
你已經寫的是知名的「網站」
而我問是
你所謂的有名的「平台」,拿來當基礎在上面做開發的
player iT邦大師 1 級 ‧ 2010-08-30 07:34:27 檢舉
請勿利用 http://www.scribd.com/
進行檔案分享
那邊下載檔案要花錢的
粉窮....orz
player iT邦大師 1 級 ‧ 2010-08-30 09:52:39 檢舉
關於「平台」
如果你是要問它們是用那些軟硬體架出來的?
還是問他們的架構?

拿AP的MS-Office與多人多工的網站來比較?
基本上沒有意義
因為比較的基準不同

萬丈高樓平地起
只要基礎建設打好
(資料庫正規化,資料庫與網頁的快取機制,負載平衡,老闆肯花錢買軟硬體....等)
任何網站都有可能擴充到同時服務數萬人以上的網站
12
wordsmith
iT邦高手 1 級 ‧ 2010-08-30 10:18:25
最佳解答

pchome和露天應該都是土法鍊鋼鍊出來的,ebay不清楚,而Facebook,根據《Facebook:性愛與金錢、天才與背叛交織的祕辛》書中所寫,也是佐克伯自己硬刻出來的(雖然依書中暗示,可能有參考別人的概念)。

其實就網站而言,有兩個層次,一個是開發框架,一個是應用程式框架。開發框架就像Zend Framework、CakePHP、RoR等,幫你設計好一些Web網站所需的必要架構和工具,你再用來形塑自己的網站。

至於應用程式框架,則是像LifeType(部落格)、Druple(內容管理)、osCommerce(電子商務)等,更進一步幫你做好特定領域的應用,讓你只需要改改皮,加一些外掛,就能依照自己的目的做成網站。

不過越大型的網站,就越不可能是從應用程式框架出發,因為太多特定的需求都會受限於原來的應用程式,像Pixnet原先也是從LifeType開始,但後來也是得整個大翻修。

至於開發框架,我覺得這個比較有可能是這些大型公司會採用,可以讓開發人員在開發過程中有一定的規範可循。不過久了也一樣會有問題,例如說如果有bug,你是要自己修還是等框架開發者修?等可能緩不濟急,自己修日後可能就無法升級,所以到頭來,我覺得大型網站自己刻的可能性還是比較大。

另外rochuang有一個盲點,除了露天是一步到位之外,其他的都有演進的過程,pchome和facebook也都不是一開始就長這樣,功能是隨時間慢慢堆疊上去的。而露天之所以能一步到位,也和市場上已經有一個成功的典範可以參考有關。

所以到頭來,要做到你所謂複雜的架構,就是要參考上面兩位大大所說的一些資源,那些都是根本。我想那些大型網站的開發人員,應該對這些東西都要有所認知才行。

但是如果你覺得一開始沒辦法消化,那我覺得是可以從一些開發框架著手,它至少可以減少開發工作一半一以上的精力,可以讓你專注在需要的事情上。

fillano iT邦超人 1 級 ‧ 2010-08-30 13:31:21 檢舉

大推!開心
而且考慮架構時,大概還要分成兩類:

  1. 靜態內容(例如wikipedia)
  2. 動態內容(例如twitter、plurk、facebook)

靜態內容網站的架構,可以參考我前面回應中有提到的wikipedia架構的發展歷程連結。

動態內容的網站架構...目前還有很多技術持續發展中。例如一些nosql技術的應用,大多都是這類網站發展出來的,以因應他們的實際需求(快速反應內容變動)。另外,提高程式執行速度/效率也是一個方向,例如facebook都是用php做開發,為了提高程式執行的速度,他們自己開發了一套工具,把php編譯成原生的執行檔。

以PHP而言,如果真的是要開發這類大型應用,依照之前聽過Rasmus Lerdorf演講的意見,恐怕還要避開一些現有的開發架構,不過這是主要是考慮效能問題。可以看看他來台灣的演講內容:
http://talks.php.net/show/ntu

一些比較特別的服務,例如相片、影片等,還需要特別的架構考量,這裡就不說了。(影片轉檔、照片縮圖都需要特別的架構,例如分配任務等來把轉檔工作分配出去)

20
逮丸逮丸
iT邦大師 1 級 ‧ 2010-08-29 08:28:37

可參考的簡報資料:
Real World Web: Performance & Scalability
Real World Web: Performance & Scalability <object data="http://d1.scribdassets.com/ScribdViewer.swf" height="500" id="doc_938312148183879" name="doc_938312148183879" rel="media:document" resource="http://d1.scribdassets.com/ScribdViewer.swf?document_id=2569319&access_key=key-hmtv7al4b6kq08y533b&page=1&viewMode=list" style="outline:none;" type="application/x-shockwave-flash" width="100%"> <param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"></param><param name="wmode" value="opaque"></param><param name="bgcolor" value="#ffffff"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><param name="FlashVars" value="document_id=2569319&access_key=key-hmtv7al4b6kq08y533b&page=1&viewMode=list"></param><embed allowfullscreen="true" allowscriptaccess="always" bgcolor="#ffffff" height="500" id="doc_938312148183879" name="doc_938312148183879" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=2569319&access_key=key-hmtv7al4b6kq08y533b&page=1&viewMode=list" type="application/x-shockwave-flash" width="100%" wmode="opaque"></embed></object>
可參考的經典書:
Building Scalable Web Sites
該書中文簡介:
《Building Scalable Web Sites》Flickr架構師傳授高延展性網站建構技巧
一定要中文書的話,參考對岸的這本書及相關書的連結:
構建高性能Web站點

用 google 以 web scalability 可找到許多怎麼把網站搞大的資料。
一定要中文的話,其中可參考:
XDite的 Blog.XDite.net » Scaling Rails Site 裡的多篇文章

閱讀參考上述相關資料,
較能知道怎樣才能把自己的網站搞大的原則,
應用到自己要開發的環境上,
勝過探究一個一個大型網站的發展歷程。

看更多先前的回應...收起先前的回應...
fillano iT邦超人 1 級 ‧ 2010-08-29 14:36:09 檢舉

我從最近很紅的nosql補充一下,可以從:
http://en.wikipedia.org/wiki/NoSQL
當作一個開始。中文的話,可以參考宗董這篇:
http://plog.longwin.com.tw/news-technology/2009/11/06/key-value-system-category-2009

另外可以看一下gslin的:
http://blog.gslin.org/archives/2009/07/25/2065
尤其是裡面講到的這篇:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.20.1495
或是簡單一點的(上一篇是論文):
http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

另外Ayende Rahien今年寫了幾篇nosql精彩的文章,可以參考:
http://ayende.com/Blog/category/565.aspx

我很久以前常看的是wikipedia的架構,他的成長過程等的相關資訊,這也是一個非常實際的例子,例如:
http://highscalability.com/wikimedia-architecture

...提供的資料有點雜亂就是了,主要是最近有在關心的主題。

rochuang iT邦新手 5 級 ‧ 2010-08-29 23:36:12 檢舉

請問你們給的都是主要介紹那些知名網站的架構設計原理嗎?

幾個發展歷程的簡報資料,
蠻值得一讀,更容易知道每發展到什麼階段,
會碰到怎樣的議題。
Scalable Web Architectures: Common Patterns and Approaches
<object height="355" id="__sse40959" width="425"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scalable-web-architectures-common-patterns-and-approaches-9562&stripped_title=scalable-web-architectures-common-patterns-and-approaches"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed allowfullscreen="true" allowscriptaccess="always" height="355" name="__sse40959" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scalable-web-architectures-common-patterns-and-approaches-9562&stripped_title=scalable-web-architectures-common-patterns-and-approaches" type="application/x-shockwave-flash" width="425"></embed></object>

7 Stages of Scaling Web Applications
較簡單的說明,
資料庫、快取如何在擴充的過程上,發揮怎樣的功能。
<object height="355" id="__sse24597" width="425"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=how-to-scale-your-web-app-3792&stripped_title=how-to-scale-your-web-app"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed allowfullscreen="true" allowscriptaccess="always" height="355" name="__sse24597" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=how-to-scale-your-web-app-3792&stripped_title=how-to-scale-your-web-app" type="application/x-shockwave-flash" width="425"></embed></object>

How to scale your web app
分成七個階段所會面臨的議題。
<object height="355" id="__sse545001" width="425"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=linuxworld-1218083370681251-9&stripped_title=7-stages-of-scaling-web-applications"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed allowfullscreen="true" allowscriptaccess="always" height="355" name="__sse545001" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=linuxworld-1218083370681251-9&stripped_title=7-stages-of-scaling-web-applications" type="application/x-shockwave-flash" width="425"></embed></object>

fillano iT邦超人 1 級 ‧ 2010-08-30 16:06:25 檢舉

Wow 這些也很讚!喜歡

4
patrickf127
iT邦新手 2 級 ‧ 2010-08-30 12:57:48

可分幾個部分

  1. Network: 用硬體SLB作流量分散與http優化
  2. Web Server:數台Http Server
  3. AP Server:數台J2EE Server
  4. DB Server:數台SQL Server
    如有大量媒體檔案,也須有NAS Server作DISK IO流量分散的解決方案,但須搭配FC SAN.

我要發表回答

立即登入回答