redis如何支援高併發10wQPS

2021-10-01 11:57:32 字數 273 閱讀 6939

1.單執行緒,不存在程序切換影響cpu速度

2.純記憶體操作

3.使用多路i/o復用模型,非阻塞io

多路i/o復用模型是利用 select、poll、epoll 可以同時監察多個流的 i/o 事件的能力,在空閒的時候,會把當前執行緒阻塞掉,當有乙個或多個流有 i/o 事件時,就從阻塞態中喚醒,於是程式就會輪詢一遍所有的流(epoll 是只輪詢那些真正發出了事件的流),並且只依次順序的處理就緒的流,這種做法就避免了大量的無用操作。這裡「多路」指的是多個網路連線,「復用」指的是復用同乙個執行緒。

假如lvs支援10w併發架構

1.www.baidu.com 根據使用者輸入的url,由dns解析成對應的ip位址,根據本地的隨機埠建立tcp連線請求後端的lvs四層負載均衡。2.訪問到lvs四層的主負載均衡伺服器,根據lvs配置的演算法由本地隨機產生的埠,將10w個併發 到後端的7層負載均衡,進行流量分發。4.web集群組接收...

10w定時任務,如何高效觸發超時

很多時候,業務有定時任務或者定時超時的需求,當任務量很大時,可能需要維護大量的timer,或者進行低效的掃瞄。一般來說怎麼實現這類需求呢?方案一 只啟動乙個timer,但需要輪詢,效率較低 方案二 不需要輪詢,但每個請求包要啟動乙個timer,比較耗資源 廢話不多說,三個重要的資料結構 1 30s超...

10w定時任務,如何高效觸發超時

二 環形佇列法 廢話不多說,三個重要的資料結構 1 30s超時,就建立乙個index從0到30的環形佇列 本質是個陣列 2 環上每乙個slot是乙個set,任務集合 3 同時還有乙個map,記錄uid落在環上的哪個slot裡 同時 1 啟動乙個timer,每隔1s,在上述環形佇列中移動一格,0 1 ...