「可伸縮性(scalability)」是軟體廠商常常在新聞稿中用到的乙個詞(也是人們站在飲水機旁談論的乙個詞),但這個詞在很多情況下都被誤解了。例如,很多人說起可伸縮性的時候其實指的是效能和高可用性。royans k tharakan試圖回答「什麼是可伸縮性」這個問題,他說: 可伸縮性,簡單來說,是以更大的規模來做您現在所做的事。伸展乙個web應用的規模在於讓更多的人使用您的程式。假如您沒法找出方法在伸展規模的同時提高效能,沒關係。而且只要您能夠伸展規模來處理更大數量的使用者,那麼有幾個單點故障(single point of failure)也沒關係。 royans解釋說如今我們在面對規模伸展的時候有兩個選擇:
◆縱向的可伸縮性 - 在同乙個邏輯單元內增加資源來提高處理能力。這樣的例子包括在現有伺服器上增加cpu,或在現有的raid/san儲存中增加硬碟來提高儲存量。
◆橫向的可伸縮性
- 增加更多邏輯單元的資源,並令他們像是個單元相同工作。大多數集群方案、分布式文件系統、負載平衡都是在幫助您提高橫向的可伸縮性。 架構師們都在為達到線性的可伸縮性而掙扎,目的是讓系統產出的增長和系統中投入資源的增長保持穩定的比率。然而,增加資源會導致一般耗費(overhead)的額外增長,因此難以達到線性的可伸縮性。royans將之稱為「伸縮性因子」,並用他來區分各種型別的伸縮能力:
◆假如在您擴大規模的時候伸縮性因子保持為常數,這種叫做線性伸縮性。
◆但很可能有些元件並不像其他元件那麼適應規模的增長。小於1.0的伸縮性因子叫做次線性伸縮性。
◆話說回來,也可能因為增加更多元件而獲得更佳的效能(在raid系統中跨多個磁碟的i/o,當磁碟越多,效能越好)。這種叫做超線性伸縮性 。
◆假如應用程式沒有專門為可伸縮性而設計,有可能當規模擴大的時候情況會變糟。這種稱為負伸縮性。 跟軟體研發中的許多事物相同,這裡也沒有適合一切情形的銀彈能夠解決您的伸縮性問題。royans建議說,「假如您急切需要可伸縮性,向縱向發展可能是最容易的」,但注意「不幸的是縱向伸展會隨著您的規模增長而越來越昂貴」,而且「無窮的橫向線性伸縮性只是難以達到,而無窮的縱向伸縮性絕不可能」。他繼續說: 「從另一方面來說,橫向可伸縮性並不需要您購買越來越昂貴的伺服器。他的本意是用普通的儲存和伺服器方案來實現規模伸展。但是橫向可伸縮性也不便宜。應用必須從建造的最底層就加以考慮才能在多台伺服器上執行得像一台伺服器相同。」 royans最後建議應該考慮任何的層次才能解決可伸縮性問題: 「對於乙個成功的web應用,任何的層次都要同樣能夠應付規模的增長。包括儲存層(集群文件系統、s3等)、資料庫層(分割槽、聯合)、應用層(memcached、scaleout、terracota、tomcat clustering等等)、web層、負載平衡、防火牆等等。比如,假如您沒辦法實現多個負載平衡控制器來處理未來的網路流量,不管您在web層的橫向伸縮性上扔下多少錢,都不會有什麼效果。您的流量始終被限制在乙個負載平衡控制器能夠承受的程度。
什麼是可伸縮性測試
提到效能測試,大家馬上腦海裡馬上會出現負載測試 壓力測試 容量測試等概念,那麼大家知不知道還有可伸縮性測試。可伸縮性測試可以看成效能測試的乙個擴充套件,關注系統本身的可伸縮性,下面給大家具體介紹。系統的可伸縮性可以從硬體和軟體兩個方面來理解 1 硬體的可伸縮性 是不是可以通過硬體裝置的增加來支援更多...
什麼是可伸縮性測試
提到效能測試,大家馬上腦海裡馬上會出現負載測試 壓力測試 容量測試等概念,那麼大家知不知道還有可伸縮性測試。可伸縮性測試可以看成效能測試的乙個擴充套件,關注系統本身的可伸縮性,下面給大家具體介紹。系統的可伸縮性可以從硬體和軟體 兩個方面來理解 1 硬體的可伸縮性 是不是可以通過硬體裝置的增加來支援更...
可伸縮性搜尋框 Duration
最近在設計班級 的首頁,模仿別人部落格裡使用到的可伸縮的搜尋框,剛開始想想覺得挺奇妙的,後來發現這其實不難,利用之前 css 學過的 duration 就可以實現了。下面是我從班級首頁中抽出來的搜尋框製作成的 demo,跟大家分享下。我們先看看 css box assistive searchare...