Netty初探-架构剖析

来源:互联网 发布:mac air可以换电池吗 编辑:程序博客网 时间:2024/04/29 05:19

Netty逻辑架构

Netty采用了典型的三层网络架构进行设计与开发。逻辑架构如下:

netty逻辑架构

  • Reactor通信调度层

    主要职责:监听网络的读写和连接操作,负责将网络层的数据读取到内存缓冲区中,然后触发各种网络事件,例如连接创建、连接激活、读事件、写事件等,将这些事件触发到Pipeline中,由Pipeline管理的职责链进行后续处理。
    由一系列的辅助类完成,包括Reactor线程NioeventLoop以及父类、NioSocketChannel、ButeBuffer等。

  • 职责链ChannelPipeline

    负责事件在职责链中有序传播,同时负责动态地编排职责链。职责链可以选择监听和处理自己关心的事件,可以拦截处理和向后/向前传播事件。

  • 业务逻辑编排层(service ChannelHandler)

    分为两类,一类是纯粹的业务逻辑编排,一类是其他的应用层协议插件。

关键架构质量属性

  • 高性能
    • 异步非阻塞I/O类库,基于Reactor模式
    • TCP接受和发送缓冲区使用直接内存代替堆内存,避免了内存复制,提升了I/O读取和写入的性能。
    • 支持通过内存池的方式循环利用ByteBuf,提升性能。
    • 可配置的I/O线程数、TCP参数,为不同用户提供定制化参数,满足不同的性能场景。
    • 采用环形数组缓冲区实现无锁化并发编程,代替传统的线程安全容器。
    • 合理使用线程安全容器、原子类,提升并发处理能力。
  • 可靠性
    • 链路有效性检测
    • 内存保护机制
    • 优雅停机
  • 可定制性
  • 可扩展性
0 0