You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
土豆兄弟 3e646a2f6a [其他提交](master): todo 下班回家整理相关的知识点
对分表分库框架进行整理其官网代码示例,构建其快速集成和使用的技术栈
2 years ago
..
dev-protocol-disruptor-netty-client [其他提交](master): todo 下班回家整理相关的知识点 2 years ago
dev-protocol-disruptor-netty-common [新增功能](master): 更新代码 2 years ago
dev-protocol-disruptor-netty-server [新增功能](master): 更新代码 2 years ago
README.md [其他提交](master): todo 下班回家整理相关的知识点 2 years ago

README.md

Disruptor与Netty实现百万级长连接接入

1. 核心模块组成

  • Disruptor与Netty整合的服务端实现
  • Disruptor与Netty整合的客户端实现
  • Netty的高性能
  • Disruptor核心池化封装
  • 承接百万级连接的接入

2. 启动及结构说明

dev-protocol-disruptor-netty-client 客户端(后启动) dev-protocol-disruptor-netty-common 公用的jar(对Server和Client端同时提供依赖) dev-protocol-disruptor-netty-server 服务端(先启动)

3. Netty高性能问题分析

WorkGroup <---- NettyClient    ------------------------->     NettyServer  (BossGroup + WorkGroup)
|                                                                                           |
|                                                                                           |
|/                                                                                          |/
ClientHandler                                                                        ServerHandler[如果业务很复杂的话,耗时很长的话,会影响性能
|                                                                                            |/
|/                                                                                          DATA1
DATA2                                                                                          |
|                                                                                              |
|/                                                                                          producer 生产者
producer 生产者                                                                                 |
|                                                                                              |/
|/                                                                                        disruptor组件
disruptor组件                                                                                 |      |
|        |                                                                                   |/     |/
|/       |/                                                                         consumer1    consumer2
consumer1 consumer2

  • 在使用Netty进行接收处理数据的时候,我们尽量都不要在工作线程上全编写自己的代码逻辑
  • 我们需要利用异步的机制,比如使用线程池异步处理,如果使用线程池就意味着使用阻塞队列,这里可以替换为Disruptor提高性能

  • 解决办法
    • ServerHandler的消息处理交给一个异步的线程池去处理即可(数据库持久化操作,IO读写)
    • 采用Disruptor作为异步线程池的替代来进行处理