下圖顯示了反應器設計模式類圖:
基於反應堆設計模式的IO復用
IO復用技術的架構圖如下
註意:
多線程可能涉及鎖定和切換線程的消耗。
耗時的命令會導致性能下降,CPU多核的性能無法發揮。
Redis多線程只是用來處理網絡數據的讀寫和協議分析,命令的執行還是單線程。這種設計上的改變是為了避免引入多線程而使Redis變得復雜。而且過去使用單線程主要是考慮到CPU不是Redis的瓶頸,不需要多線程並發執行,所以多線程模式帶來的性能提升並不能抵消它帶來的開發和維護成本。
現在多線程模型的引入解決了網絡IO操作的性能瓶頸。對於Redis基於內存的操作,還是很快的,有時候IO操作阻塞會影響後續操作的效率。而是進行多線程並發IO操作,然後主線程進行內存操作,可以更好的緩解IO操作帶來的性能瓶頸。
該架構如下所示: