Netty一、了解Netty

Netty的github链接

Netty

基于事件驱动的网络应用开发框架。

揭开Netty面纱

  • 本质:网络应用程序框架
  • 实现:异步、事件驱动
  • 特性:高性能、可维护、快速开发
  • 用途:开发服务器和客户端

在这里插入图片描述 最下面的核心层包括:

  • 0复制的、功能丰富的Byte Buffer
  • 通用的通信层API
  • 可扩展的事件模型

左上角为Netty支持的传输层服务:

  • TCP的Socket、UDP的Datagram
  • HTTP的Tunnel
  • In-VM的Pipe

右上角为所支持的各种协议。

Netty的maven依赖

<dependency>
	<groupId>io.netty</groupId>
	<artifactId>netty-all</artifactId>
	<version>4.1.39.Final</version>
</dependency>

Netty的NIO

Netty是基于JDK的NIO的,为什么不直接使用NIO去实现?

  • Netty做的更多
  • Netty做的更好

Netty做的更多:

  • 支持常用的应用层协议;
  • 解决传输问题:粘包、半包现象
  • 支持流量整形
  • 完善的断连、Idle等异常处理等。

Netty做的更好

  • 规避了JDK NIO bug
  • API更强大
    JDK的NIO一些API不够友好,功能薄弱,例如:ByteBuffer --》Netty‘s ByteBuf
    除了NIO之外,也提供了其他一些增强:ThreadLocal–〉Netty‘s FasrThreadLocal
  • 隔离变化、屏蔽细节
    隔离JDK NIO的实现变化,nio -》nio2(aio)->…
    屏蔽JDK NIO的实现细节

例如经典的epoll bug:异常唤醒空转导致cpu 100%。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

Netty的前尘往事

在这里插入图片描述在这里插入图片描述
使用Netty的一些典型项目:

  • 数据库:Cassandra
  • 大数据处理:Spark、Hadoop
  • Message Queue:Rocket MQ

在这里插入图片描述

趋势

在这里插入图片描述

发布了105 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_38367817/article/details/105555894