Netty那点事-前导篇

时间:2020-07-30 01:30:35   收藏:0   阅读:90

一、Netty概述

1.1 原生NIO存在的问题
1.2 Netty官网说明

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients

技术图片

1.3 Netty的优点

Netty 对 JDK 自带的 NIO 的 API 进行了封装,解决了上述问题。

1.4 Netty版本说明
1.5 Netty常见使用场景

可以了解一下目前有哪些开源项目使用了 Netty:Related projects

二、线程模型前言

2.1 线程模型基本介绍
2.2 传统阻塞I/O服务模型

技术图片

2.3 Reactor模式
  1. 解决方案
  1. 设计思想
  1. 核心组成
  1. 模式分类

三、Reactor线程模型

3.1 单 Reactor 单线程

一个NIO线程+一个accept线程:

技术图片

  1. 方案说明

结合实例:服务器端用一个线程通过多路复用搞定所有的 IO 操作(包括连接,读、写等),编码简单,清晰明了,但是如果客户端连接数量较多,将无法支撑,前面的 NIO 案例就属于这种模型。

  1. 优缺点分析
3.2 单Reactor多线程

技术图片

技术图片

  1. 方案说明
  1. 优缺点说明
3.3 主从 Reactor 多线程

技术图片

技术图片

针对单 Reactor 多线程模型中,Reactor 在单线程中运行,高并发场景下容易成为性能瓶颈,可以让 Reactor 在多线程中运行

  1. 方案说明
  1. Scalable IO in Java 对 Multiple Reactors 的原理图解:

(Doug Lea)

技术图片

技术图片

  1. 方案优缺点说明

结合实例:这种模型在许多项目中广泛使用,包括 Nginx 主从 Reactor 多进程模型,Memcached 主从多线程,Netty 主从多线程模型的支持

3.3 Reactor模式小结
  1. 3 种模式用生活案例来理解
  1. Reactor 模式具有如下的优点:

https://juejin.im/post/5be00763e51d453d4a5cf289

https://juejin.im/post/5a228cc15188254cc067aef8

https://juejin.im/post/5bdaf8ea6fb9a0227b02275a#heading-5

https://www.jianshu.com/p/b9f3f6a16911

https://www.infoq.cn/article/iRfKjNuxYGSVgm5CtIpr

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!