step1、伺服器快取:降低資料庫壓力;
step2、第一定律:就是不要使用分布式;
分布式:多台伺服器完成一台伺服器做的事;
每台服務完成步驟,序列完成全部(狹義分布式)
廣義來說,集群也是分布式;
step3、系統效能優化第一步就是快取cache:
優點:1、降低伺服器壓力;
2、提公升相應速度;
3、成本低;
缺點:資料更新不及時
step4、集群(cluster)負載均衡
集群定義:一台伺服器做的事,現在由多台伺服器共同承載,每台伺服器都是獨立完成的
step5、讀寫分離
資料庫瓶頸:資料庫的讀寫分離
木桶理論:裝水能力是由最短的那塊板決定的
資料庫的唯一性
step6、cdn快取(集群負載均衡之前)
優點:1、縮短網路路徑,加快相應速度
2、減少
step7、分布式檔案系統(distributed file system)
step8、專項突破
場景一:全文搜尋
非規範性搜尋,不是嚴格匹配資料庫的資料;(關係型資料庫做不到)(luene----solr----es)
全文檢索技術,分詞建索引--搜尋時分詞--搜尋出來的詞搜尋--能匹配不要求完全匹配--能最大程度上搜尋出相關詞彙
場景二:秒殺系統
在高併發下,多個執行緒併發更新庫存,導致庫存為負的情況下--超賣問題
1、基於資料庫的鎖 -- 悲觀鎖 -- 無法滿足高併發
2、樂觀鎖 -- version -- 多個併發只有乙個成功 -- 不會超賣
限流:限制請求達到資料庫
防超賣:不能出現庫存不夠;
redis(remote dictionary server)-- 遠端字典伺服器 -- 記憶體快速讀寫
單執行緒多程序模型 -- 只有乙個執行流,只有乙個人做事兒 -- 10wqps -- 沒有執行緒安全問題
場景三:刷榜
直播間刷禮物,實時統計排行,redis
二八原則:
80%的請求聚焦在20%的資料上
80%的請求都是查詢20%是增刪改;
讀寫分離:一主多從,發布訂閱
寫庫:增刪改
讀庫:查詢,資料來自發布伺服器
發布伺服器:主庫增刪改操作後,推送日誌到補發伺服器,從庫訂閱,基於日誌完整資料同步;
不限制從庫的個數;
dns(domain name system)負載均衡
1、部署多個獨立的ip對外提供服務
2、dns伺服器配置多個ip
3、dns解析時**
優點:高效,就近原則
缺點:只能輪訓,獨立ip很貴,不能錯誤發現
硬體負載均衡:
f5、array、netscale 硬體+軟體打包
效能高,穩定好,廠商支援
軟體負載均衡:
lvs--linux virtual server 4層協議(ip+port) -- 輪訓**(不能根據儲存資訊**) --更底層更高效--配置很難
haproxy--4層/7層--http協議/http資訊--**更加靈活--非常強大--也不太好配置
nginx:http,https 協議
各種策略:
輪詢(預設)----weight---- ip-hash ---- fair策略 ---- url-hash
使用者持久化:ip-hash--會話沾滯--侷限性很強
session共享--inproc/stateserver/sql server--redis session
基於httpheader----cookie/jwt(token/identityserver4)
集群 分布式 負載均衡
1 linux集群主要分成三大類 高可用集群,負載均衡集群,科學計算集群 負載均衡集群 load balance cluster 負載均衡系統 集群中所有的節點都處於活動狀態,它們分攤系統的工作負載。一般web伺服器集群 資料庫集群和應用伺服器集群都屬於這種型別。負載均衡集群一般用於相應網路請求的網...
集群,負載均衡,分布式
簡潔明瞭的解釋 記錄一下 集群 一堆伺服器互聯 負載均衡 一堆伺服器分攤壓力 分布式 一堆伺服器分開工作 相對來說,集群一般是指一堆伺服器去做同一項工作,一般是集中高速互聯實現快速的運算,對外的感覺是一台伺服器。負載均衡也是一堆伺服器做同一項工作,不同的伺服器做的事情基本相同,但是對外能發現是不同的...
集群 分布式 負載均衡
計算機集群通過一組鬆散整合的計算機軟體和 或硬體連線起來高度緊密地協作完成計算工作。集群系統中的單個計算機通常稱為節點。集群計算機通常用來改進單個計算機的計算速度和可靠性。單個重負載的運算分擔到多台節點裝置上做並行處理,每個節點裝置處理結束後,將結果彙總,返回給使用者,系統處理能力得到大幅度提高。乙...