2009-06-01 38 views
15

在閱讀關於框架(.net。ruby on rails,django,spring等)時,我總是看到如此並且不能很好地擴展。說一個框架「可以很好地擴展」是什麼意思?

當某人說框架「可以很好地擴展」,以及框架「不能很好地擴展」意味着什麼時,這意味着什麼?

謝謝。

+9

秤是一種用於比較測量的老式設備。它們通常是通過一種平衡來構建的......不幸的是,這使得很難測量那些擺動和跳躍很多的東西 - 所以一個仍然坐着的框架被認爲是「可以很好地擴展」,而一個表現得好像它糟糕的是,它的每日加侖咖啡比例混合太多焦炭。 – Shog9 2009-06-01 20:02:36

+0

哈哈哈,很好的比較,Shog9。 – 2009-06-01 20:04:57

+6

說「框架X不能很好地擴展」通常意味着「我對Framework X有一種非理性的仇恨」。另一方面,說「框架Y可以很好地擴展」意味着「我喜歡Framework Y,但不想承認我喜歡它,因爲它可以很容易地創建閃亮的按鈕」。 – Pesto 2009-06-01 20:12:49

回答

15

當您針對併發用戶繪製某些資源使用情況(內存,時間,磁盤空間,網絡帶寬)時,會得到一個函數,該函數描述應用程序在不同比例因子下的工作方式。

小規模 - 少數用戶 - 使用少量資源。

大規模 - 大量用戶 - 使用大量資源。

關鍵問題是「多麼接近線性是縮放嗎?」如果它線性擴展,那麼服務2,000個併發用戶的成本是服務1,000個用戶的2倍,服務500個用戶的4倍。這是一個很好擴展的工具/框架/語言/平臺/操作系統。這是可預測的,預測是線性的。

如果它不能線性伸縮,那麼服務4000個用戶的成本是服務2000個用戶的1,000倍,而服務2000個用戶需要100個服務500個用戶的成本。這並沒有很好地擴展。隨着使用量的增加,出現了問題;它看起來不可預測,也不是線性的。

7

這意味着一個特定的框架確實(或不)滿足更多用戶對它的需求。例如,如果您的應用程序使用VBScript編寫,那麼它可能無法很好地處理Facebook的4000萬用戶。

This blog post解釋了Twitter在一年前經歷的一些可擴展性痛苦。它可以提供一些更深入的解答你的問題的答案。

有時缺乏可伸縮性會被用於詆譭語言或框架,所以請留意這一點。堅持顯示真實指標的研究。這也適用於上一段中的VBScript示例。

+0

我猜facebook在2009年有4,000萬用戶,如果他們沒有一個平臺好,他們將無法處理他們現在擁有的1000萬用戶 – Ozzy 2012-10-21 19:36:28

3

如果框架或應用程序可以很好地擴展,這意味着它可以處理更大的負載。隨着您的網站日益受到更多訪問者和更多訪問者的歡迎,一個可以很好地擴展的框架可以處理更大的負載,而且它可以處理更小的負載。一個小時可以收到200,000次點擊的框架可以很好地擴展,而當它每小時收到1個點擊時,它的表現會相同。不僅命中,而且在多個服務器上部署,可能在負載均衡之後,可能還有多個不同的數據庫服務器。可以很好地擴展的框架可以很好地處理這些日益增長的需求

例如,twitter在去年幾乎一夜之間爆炸。它是使用Ruby On Rails開發的,它在Rails是否能夠很好地擴展的問題上一直是熱門話題。

2

有在我腦海裏的幾個元素吧。首先是顯而易見的 - 性能縮放。您的框架可以用於構建高容量,高吞吐量系統,還是隻能用於構建更小的應用程序。它是否會在硬件上垂直擴展(例如並行庫),並且會水平擴展(例如Web農場)。

其次是它可以擴展到更大的團隊或企業。也就是說,它對大型代碼庫有效嗎?大型開發團隊?它有很好的工具支持嗎?它的部署有多簡單?你可以推出幾十甚至幾百甚至幾千用戶嗎?一直以來,僱用具有這種技能的人很容易。想想試圖組建一個20或50人的開發團隊,他們都在這個框架上工作。會不會很容易或者幾乎不可能?

0

恕我直言,說框架「擴展好」通常意味着傳聞鏈中的某個人能夠使用它來處理大量的數據。

在並行編程中,可伸縮性通常用於描述算法在並行化時如何執行。具有1:1加速的算法是一種罕見的野獸,但性能會在硬件/ CPU的兩倍,高音的三倍硬件/ CPU等上增加一倍......

根據我的經驗,幾乎任何框架都可以根據足夠的專業知識進行擴展。

框架越容易使用,專業知識不足的開發人員越有可能遇到可伸縮性問題。

0

這意味着一些受到尊重的公司正在對其採取嚴肅的態度,並且沒有任何問題。

0

縮放意味着通過使用更多硬件來滿足更多需求是多麼容易。

示例:您的網站使用某種語言,每天訪問1000次。您在某些傑出雜誌中獲得精選,並且您的用戶數量也在增長。突然你每天有100萬次訪問,這是1000倍。如果您可以只使用1000臺服務器來滿足不斷增長的資源需求,則您的網站可以很好地擴展。另一方面,如果您添加2000臺服務器,但用戶仍然無法連接,因爲您的數據庫每天只能處理1000個請求,而不是您的網站不能很好地擴展。

相關問題