对比Netty,Nginx,Redis 线程模型

原创
2019/01/24 22:13
阅读数 890

Netty

Netty 的线程模型主要是基于Reactor 模型,但是可以灵活配置,单reactor 单线程,单reactor多线程,和多reactor 多线程模型。

不同这几个reactor模型使用的场景也不一样: 单reactor多线程:适用于并发量不大,reactor线程能够处理socket连接。 多reactor多线程:适用于瞬时并发量过高,需要将单个reactor的处理能力和职责分散,避免造成瓶颈,和延迟。

Redis

Redis 的线程模型就是典型的单reactor 单线程模型; Redis 因为是从内存读取数据,所以任务耗时非常短,同时能减少线程切换带来损耗,这种线程模型,还能保证指令的顺序执行。

Nginx

也是单reactor多线程,只是具体职责稍有不同。 https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/

Nginx 和Netty的区别主要Nginx 是用C语言开发的,线程模型和操作系统相关,而Netty则同JVM线程模型相关。

总结

这些设计原则都是基于充分利用cpu,减少context switch。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部