系統伸縮性,是指在不改變系統軟硬體設計,僅僅通過新增伺服器的情況下,就能提公升系統的處理能力。
系統成為大型的,分為2種,一種是開始就設計成大型的,例如12306**,設計之初就要考慮能併發處理多少請求,要儲存多少資料。 另外一種是從小系統慢慢演化成大型系統的,例如google、**,一開始只是幾台伺服器,然後隨著業務的增長系統不斷演化。
在演化成長型的系統中,最重要的技術手段就是集群。當系統具備可伸縮性,那麼隨著業務量的增長,可以向伺服器集群中新增伺服器,從而是系統的業務處理能力也相應增長,而不需要去修改系統的架構。
系統伸縮性設計可分為2類。
一類是根據功能進行物理分離來實現伸縮,一類是按單一功能做集群實現伸縮。(當然很多時候是同時運用這2種方式)
系統初期一般是根據功能進行分離,例如最開始整個系統就跑在一台伺服器上,隨著發展,將資料庫分離處理單獨執行在伺服器上,接著將快取分離出來單獨執行,然後是靜態資源分離出來。根據功能分離一般又分為2種情況,縱向分離(例如系統前端、後端、資料庫分別部署擴充套件), 橫向分離(例如,登入流程、搜尋流程、購物車流程分別部署擴充套件)。
將系統根據不同功能進行分離,可以分割到很小的粒度,但是當業務發展到一定程度,再小的粒度規模靠一台伺服器也難以承受,這是就要根據單一功能做集群了。當一頭牛拉不動車的時候,不要嘗試去尋找一頭更強壯的牛,而是用兩頭牛來拉車。 集群中的關鍵技術就是負載均衡,
負載均衡產品分為軟體和硬體、開源和商用產品。
負載均衡的實現分成2個部分:
1、根據負載均衡演算法,從集群中選擇一台合適的主機。
2、將請求**到這台主機。
第一部分:輪詢、加權輪詢、隨機、加權隨機、雜湊、最少連線, 等等。
第二部分:http重定向、dns網域名稱解析定向、ip重定向、鏈路層重定向,等等。
系統設計 後台系統的伸縮性
1 軟體分層 分層思想很普及,把資料流拆成幾段,比如接入層 load balancer webserver 應用服務層 platformserver 資料儲存層 資料庫database nosql 2 伸縮性定義 2.1 接入層 loadbalancer webserver 請參考乙個客戶端請求到後...
ZooKeeper(八)伸縮性
經過前面的介紹,我想大家都已經知道了在zookeeper集群當中有兩種角色leader和follower。leader可以接受client 請求,也接收其他server 的寫請求,負責更新系統狀態。follower也可以接收client請求,如果是寫請求將 給leader來更新系統狀態,讀請求則由f...
ZooKeeper的伸縮性
經過前面的介紹,我想大家都已經知道了在zookeeper集群當中有兩種角色leader和follower。leader可以接受client 請求,也接收其他server 的寫請求,負責更新系統狀態。follower也可以接收client請求,如果是寫請求將 給leader來更新系統狀態,讀請求則由f...