Netty入门学习(三):从解决问题过程理解为什么有Netty?

小咪咪 2023-06-04 07:52 56阅读 0赞
背景
  1. 为什么Java如此盛行
    a) 支持异构平台。

    b) Spring的生态圈。

    c) 丰富类库和第三方框架。

  2. 现在第三方框架怎样才能盛行
    a) 支持异构平台,异构语言。比如gRPC。

    b) 能够解决痛点问题,比如JVM解决跨平台问题。Netty能够解决Java在网络编程的缺陷问题。

    c) 易用。易用性主要体现在,产品设计的概念符合人类直觉,概念简单。概念间的关系清晰,组织逻辑结构明确。

    d) 有社区。


Java
  1. Java类库依然有缺陷。现实世界又是如何解决的?

    a) 有guava包,commons包对Java类库的一个补充。

    b) 传统I/O是阻塞I/O,这样的I/O在socket通信时,有着非常大的阻碍,也阻止了Java的高并发网络编程的发展。JDK1.4的时候,对传统的io进行了升级,非阻塞I/O,它带来了新的概念,比如Buffer,Channel,Future,Selector,这样多路复用的思维模式。但是对于文件系统来说,依然是阻塞的工作模式,但是对于socket通信来说,这样的非阻塞多路复用的模式,带了根本性发展,而且还带来了新的知识零拷贝。直到JDK1.7的时候,NIO又进行了升级,这个时候被称作AIO,是真正意义上对文件系统支持异步操作,根据Douglea的nio文档,和java.nio提供的API,是可以写一个高并发的网络服务程序,但是非常繁琐,于是基于NIO的基础写了一个第三方库Netty。


Netty
  1. Netty的由来历程:

    a) 是因为从传统的socket I/O它一请求一应答,并且应对每一个请求都会创建一个线程,而且线程对于操作系统来说是非常珍贵的资源,线程越多,操作系统进行上下文切换的时候,也非常耗费资源。

    b) 随着NIO的发展以及Reactor模式对解决多个客户端的并发请求的方案的成熟。这个Reactor模式的工作过程就说明了,它能够支持大量请求,它能够解决传统I/O面对的问题。

    c) 于是Netty充分运用Reactor反应器模式,这也是它为什么有bossGroup和workGroup的概念,为什么有Selector, ChannelFuture, SelectionKey, Buffer的概念。它把客端发来的请求,全部封装为事件,连接事件,解码事件,计算事件,编码事件,响应事件。而所有的这些事件全是在handler中处理。

    d) 理解为什么Netty存在?需要先理解为什么Reactor存在。
    理解为什么Reactor存在?需要理解为什么NIO存在?
    理解NIO为什么存在?需要理解I/O的演进过程。


小结
  1. Java是一门编程语言,它也不能解决所有问题。出现的第三方框架(Netty)就是来解决Java解决不了的问题。
  2. 最后:Netty带着Reactor反应器模式的思想,利用Java NIO提供的API进行了高层次的封装。

发表评论

表情:
评论列表 (有 0 条评论,56人围观)

还没有评论,来说两句吧...

相关阅读