# springboot-rabbit-netty-cluster **Repository Path**: workassb/springboot-rabbit-netty-cluster ## Basic Information - **Project Name**: springboot-rabbit-netty-cluster - **Description**: springboot+rabbitMQ+netty实现tcp集群服务器,Hazelcast实现缓存技术 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/workassb/springboot-rabbit-netty-cluster/settings - **GVP Project**: No ## Statistics - **Stars**: 17 - **Forks**: 9 - **Created**: 2020-01-13 - **Last Updated**: 2025-10-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # springboot-netty #### Netty简介 > Netty是一个Jboss提供的一个异步的、基于事件驱动的Java网络应用框架, 用以开发高性能、高可靠性的网络IO程序。 #### 应用场景 1.开发RPC框架 2.游戏行业, 开发账号登录服务器或地图服务器之间的高性能通信 #### 原生NIO存在的问题 1.类库和Api繁杂, 适用麻烦 2.需要熟悉Java多线程编程, 因为NIO编程设计Reactor模式, 必须对多线程和网络编程非常熟悉, 才能编写高质量的NIO程序。 3.开发工作量大, 例如客户端断开重连、网络闪断、半包读写、失败缓存、网络拥堵和异常流等问题 4.NIO存在bug, 例如Epoll bug, 会导致Selector空轮询,最终导致CPU100%, 直到JDK1.7仍然没有解决 #### Netty的优点 >Netty对JDK自带的NIO进行了封装,解决了上述问题 >设计优雅, 适用于各种传输类型的统一API阻塞和非阻塞Socket,基于灵活且可扩展的事件模型,可以清晰地分离关注点,高度可定制的线程模型,单线程或一个或多个线程池 >高性能、高吞吐量、低延迟、减少资源消耗、最小化不必要的内存复制(零拷贝) >安全,完整SSL/TLS和StartTLS支持 >社区活跃、发现Bug能及时修复,同时更多新功能会被加入 #### Netty版本 >Netty版本分别是netty3.x、netty4.x、netty5.x >Netty5出现重大bug,已经被官网废弃,目前推荐使用Netty4.x稳定版本 #### Netty架构设计 > 不同的线程模型,对程序性能有很大影响 > 目前存在的线程模型有:传统的阻塞I/O服务模型和Reactor模式 > Netty线程模型主要基于Reactor多线程模型做了一定的改进 #### Netty模型 >1.Netty抽象出两个线程池BossGroup和WorkerGroup,BossGroup负责接收客户端的连接,WorkerGroup负责网络的读写,它们的类型都是NioEventLoopGroup。 >2.NioEventLoopGroup相当于一个事件循环组,这个组中含有多个事件循环,每一个事件循环都是NioEventLoop >3.NioEventLoop表示一个不断循环的执行处理任务的线程,每个NioEventLoop都有一个selector,用于监听绑定在其上的socket的网络通讯 >4.NioEventLoopGroup可以有多个线程,即可以有多个NioEventLoop >5.每个BossNioEventLoop循环执行3步 ①轮询accept事件 ②处理accept事件,与client建立连接,生成NioSocketChannel,并将其注册到某个workerNioEventLoop上的selector ③处理任务队列中的任务,即runAllTasks >6.每个WorkerNioEventLoop执行步骤 ①轮询read、write事件 ②处理I/O事件,即read、write事件,在对应的NioSocketChannel上处理 ③处理任务队列的任务,即runAllTasks >7.每个WorkerNioEventLoop处理业务时,会使用pipeline,pipeline中包含了Channel,通过pipeline可以获取到对应的通道,管道中维护了很多的处理器 ![netty模型示意图](./文档/imgs/netty.png)