Netty-架构分析

Posted 架构师的历练

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Netty-架构分析相关的知识,希望对你有一定的参考价值。

        上文介绍了Netty基本的网络IO模型:https://mp.weixin.qq.com/s/69ApbkJTSlKpMf-Mc5BEig,本文将继续介绍Netty的技术架构。

        这是官网给出的High Level的架构图,官网对于Netty的架构划分为三部分:

       1、Transport Services

       这一部分主要描述netty所支持的传输方式,包括socket、Http隧道。

       2、Protocol Support

       这一块描述Netty所支持的功能和协议,包括Http&WebSocket、SSL、gzip压缩、RTSP、Google Protobuf等

       3、核心层

       包括zero-copy机制(netty高效率的核心机制之一)、通信API、事务模型。


       官网的架构图由于是High-Level的,无法帮忙架构师和开发进行理解,根据对于源码的分析,我们可以进一步划分其技术逻辑架构,分为四层:


       1、Codec

       分为Base Codec和Extension Codec,Netty的Codec层是插件模式,用于特定协议相关的会话和链路管理,同时包含了基础Codec和业务相关Codec,如json、xml、http、https就是基础codec,而业务相关的codec包含SMTP、Memcache、Redis、Socks等。

       对于业务开发者来说,只需要基于Codec层进行业务逻辑开发即可,各种协议以插件方式提供,也支持定制私有协议插件。

        2、ChannelPipeline

        它负责传递事件,同时负责动态编排。pipeline可以选择监听和处理自己关心的事件,它可以拦截处理和向后/向前传播事件。通常情况下,往往会开发编解码handler用于消息的编解码,它可以将外部的协议消息转换成内部的pojo对象,屏蔽上层业务与底层协议的差异。

        3、Reactor

        主要负责监听网络读写和连接操作,负责将网络层的数据读取到Buffer中,然后触发连接创建、激活、读、写等事件,将这些事件触发到Pipeline中,由Pipeline管理的职责链进行后续处理。


        Netty之所以成为优秀的网络通信框架,其优美的架构设计也是重要因素之一,它的架构设计主要优点有几点:

        1、Codec层支持插件机制,可以引入或定制可种所需编解码协议。

        2、采用NIO的IO模型,基于Reactor模式,解决传统BIO模型所带来的用户线性增长的压力问题。

        3、支持zero-copy机制,减少频繁的内存拷贝。

        4、长连及链路有效性检测,目前互联网应用中,Client与Server往往采用长连模式,特别是http2普及之后,基于SSL创建长连并默认打开多路复用,可以用效减少建连握手带来的时延和资源损耗,但是为保证长链的有效性,往往需要周期性的心跳机制来进行链路检测,Netty提供了比较合理的两种链路空闲检测机制,读空闲和写空亲超时机制,可以用效检测链路的有效性,一量发现问题,可以及时关闭,并重建TCP连接。



以上是关于Netty-架构分析的主要内容,如果未能解决你的问题,请参考以下文章

源码分析 -Netty:开篇

Netty详解之整体架构

Elasticsearch源码分析-架构设计之Action

netty源码分析之服务端启动全

浅谈Netty相关概念

下载书籍:《Netty权威指南》