美文网首页
netty的高性能之道

netty的高性能之道

作者: 剑道_7ffc | 来源:发表于2020-03-28 16:01 被阅读0次

背景介绍

Netty 惊人的性能数据

使用Netty(NIO框架)相比于BIO性能提升8倍

传统RPC调用性能差的三宗罪

image.png

网络传输方式问题:同步阻塞
序列化方式问题:Bio使用的是java自身的序列化,而java自身的序列化存在序列化性能差,无法支持跨语言,序列化后的文件大等问题。
线程模型问题:因为为每个连接创建一个线程,而一台机器的最大线程数是受限的,会导致线程过多时,执行效率的下降和超过最大线程数的机器宕机。

高性能的三个主题

传输:使用什么通道将数据传给对方,如BIO,NIO,AIO,IO模型的不同决定着性能的不同。
协议:采用什么通信协议,如共有协议或自定义协议等
线程:线程模型如BIO的连接和线程一对一的模型和Reactor线程模型


image.png

Netty 高性能之道

异步非阻塞通信

在处理多个客户端请求时,可以采用多线程或IO多路复用技术来处理,IO多路复用是把多个IO的阻塞复用到一个Select的阻塞,使单线程可以处理多个客户端请求。
NIO通信模型如下


image.png

Netty 架构按照 Reactor 模式设计和实现,它的服务端通信序列图如下:


image.png
客户端通信序列图如下:
image.png

零拷贝

内存池

缓冲区重用机制

高效的 Reactor 线程模型

常用的 Reactor 线程模型有三种,分别如下:
1 Reactor 单线程模型;


image.png

2 Reactor 多线程模型


image.png
3 主从 Reactor 多线程模型
image.png

无锁化的串行设计理念

image.png

高效的并发编程

高性能的序列化框架

Netty 默认提供了对 Google Protobuf 的支持,通过扩展 Netty 的编解码接口,用户可以实现其它的高性能序列化框架,

灵活的 TCP 参数配置能力

合理设置 TCP 参数在某些场景下对于性能的提升可以起到显著的效果。

相关文章

网友评论

      本文标题:netty的高性能之道

      本文链接:https://www.haomeiwen.com/subject/vvqsuhtx.html