為什麼大多數大型網站不是用Java寫的

gudesheng發表於2008-01-03

國慶長假,老外在熱烈的討論這個話題,

原文地址: http://natishalom.typepad.com/nati_shaloms_blog/2007/10/why-most-scalab.html

我摘錄部分觀點如下:

Most of these sites are using LAMP as the core runtime stack

Some develop their own file system (Google, GFS)

Some are using caching to solve the database bottleneck (memcached and the like)


--


introducing similar solutions for addressing the scalability challenges: 在解決伸縮性方面的嘗試:

On the Data Tier we see the following:

1. Adding a caching layer to take advantage of memory resources

availability and reduce I/O overhead
2. Moving from a database-centric approach to partitioning, aka shards

注:shards是google貢獻給hibernate的一個專案,他是hibernate的一個擴充套件,可以

透明的實現資料的分佈儲存。至於如何分佈儲存由你自己定義策略,例如典型的

RoundRobinShardSelectionStrategy

 

On the Business Logic Tier:

3. Adding parallelization semantics to the application tier (e.g.,

MapReduce)
注:MapReduce是Google開發的C++程式設計工具,用於大規模資料集(大於1TB)的並行運算。MapReduce通過把對資料集的大規模操作分發給網路上的每個節點實現可靠性;每個節點會週期性的把完成的工作和狀態的更新報告回來。MapReduce會生成大量的臨時檔案,為了提高效率,它利用Google檔案系統來管理和訪問這些檔案。


4. Moving to scale-out application models to achieve linear scalability
注:
scaling:the ability of an application to address growth in throughput,

usage, and capacity
有兩種策略:scale out 和 scale up
scale up vs scale out 的區別在於:
 1 Reliance on hardware versus reliance on software
 2 Equation with "first-class" hardware versus "commodity" hardware
 3 Massive versus incremental capacity increases
 4 Centralized versus partitioned application architectures
簡單的說就是一個靠提升單個硬體的配置,另一個靠用低端配置實現叢集


5. Moving away from the classic two-phase commit and XA for transaction

processing  (See: Lessons from Pat Helland: Life Beyond Distributed

Transactions)
注: 不使用傳統的分散式事務處理,例如EJB的事務,使用新的基於space的中介軟體平臺 Space Based Architecture (SBA) and GigaSpaces XAP



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1814706


相關文章