Loading

netty实战 netty介绍和应用场景

netty高性能浅析

netty的介绍

  1. Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github上的独立项目

  2. Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。

  3. Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者Peer-to-Peer场景下的大量数据持续传输的应用。

  4. Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景

  5. 要透彻理解Netty , 需要先学习 NIO , 这样我们才能阅读 Netty 的源码。

netty 总体架构

img

Netty架构分析

Netty 采用了比较典型的三层网络架构进行设计,逻辑架构图如下所示:

img
  1. Reactor 通信调度层,它由一系列辅助类完成,包括 Reactor 线程 NioEventLoop 以及其父类、NioSocketChannel/NioServerSocketChannel 以及其父类、ByteBuffer 以及由其衍生出来的各种 Buffer、Unsafe 以及其衍生出的各种内部类等。该层的主要职责就是监听网络的读写和连接操作负责将网络层的数据读取到内存缓冲区中,然后触发各种网络事件,例如连接创建、连接激活、读事件、写事件等等,将这些事件触发到 PipeLine 中,由 PipeLine 充当的职责链来进行后续的处理。

  2. 职责链 PipeLine,它负责事件在职责链中的有序传播,同时负责动态的 编排职责链,职责链可以选择监听和处理自己关心的事件,它可以拦截处理和向 后/向前传播事件,不同的应用的 Handler 节点的功能也不同,通常情况下,往往会开发编解码 Handler 用于消息的编解码,它可以将外部的协议消息转换成内部的 POJO 对象,这样上层业务侧只需要关心处理业务逻辑即可,不需要感知底层 的协议差异和线程模型差异,实现了架构层面的分层隔离。

  3. 业务逻辑处理层,可以分为两类:

    3.1. 纯粹的业务逻辑处理,例如订单处理。

    3.2. 应用层协议管理,例如HTTP协议、FTP协议等。

netty的应用场景

  • 互联网行业
  • 游戏行业
  • 大数据行业
  • 其它开源项目使用netty

IDEA 搭建 netty 应用工程

1、创建maven项目

image-20201011205734183

2、添加 netty 依赖

image-20201011212557055
<!-- https://mvnrepository.com/artifact/io.netty/netty-all -->
<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.1.52.Final</version>
</dependency>

3、开发 Netty 服务端

4、开发 Netty 客户端

5、测试

posted @ 2020-10-14 23:11  PinGoo  阅读(2536)  评论(0编辑  收藏  举报