> 文档中心 > 基于Netty重构消息服务实现万级别即时通讯--待更

基于Netty重构消息服务实现万级别即时通讯--待更


一、首先列举一下需要实现的功能

1.实现服务端与客户端之间的全双工通信,服务端可以主动向客户端发送消息
2.区分不同客户端
3.区分不同用户
4.区分前端框架
5.服务端对客户端的连接情况统计
6.通道隔离
7.认证健全
8.心跳机制
9.对接docker容器部署
10.实现万级别并发

二、技术调研,开发框架的选择

主流框架分别有

Netty
Undertow
Jetty
Vert.x
Grizzly
spray-websocket
nodejs-websocket/Node.js
Go

由于开发语言限制,只对Netty、Undertow和Jetty进行了调研,听说Tomcat也有NIO了,但是由于不够轻量,就不考虑了

  1. Netty(开源):异步,事件驱动,NIO,轻量级,性能优秀,稳定性好,内存占用低,快速开发且可维护,传输快(零拷贝)
  2. Undertow(红帽公司):NIO,轻量级,性能良好,稳定性好,内存占用略高
  3. Jetty(开源):不够轻量级直接Pass

最终考虑基于Netty框架进行开发

版本选择:Netty5基于AIO,使用了 ForkJoinPool,增加了代码复杂度,但是性能提升并不明显,已被官方遗弃,所以选择官方一直在维护的Netty4,更加稳定,基于NIO性能也足够优秀

对Netty的简单理解

先上两张Netty的架构图
在这里插入图片描述
在这里插入图片描述