Netty入门学习(二):为什么有Netty?

背景
  1. 根据Reactor模式论文和Doug Lea的nio文档,可以在java.nio包下实现网络编程功能,但是依然很繁琐细节。
  2. 通过各种技术的发展过程来理解为什么有Netty?

Netty为什么存在?
  1. 传统io在socket中的缺陷。一请求一线程一应答。所以才有JDK1.4的NIO出现,后面也有JDK1.7对NIO的优化。
  2. Java I/O(JDK1.0)到Java NIO(JDK1.4)到Java NIO2.0(JDK1.7)的发展史。Java I/O的演进之路
  3. Reactor反应器模式。尤其它有哪些角色,角色跟操作系统的关系,跟我们需要自定义实现的Initiaiton Dispacher, Event Hadler,Handler。及其理解它的工作过程。实践过程如下:
    Doug Lea的nio文档学习之古典的网络编程服务设计
    Doug Lea的nio文档学习之Reactor单线程版本
    Doug Lea的nio文档学习之Reactor多线程版本
    Doug Lea的nio文档学习之Reactor最佳做法
  4. 其实,根据Doug Lea 的nio.pdf文档和Reactor论文,直接使用Java NIO依然可以实现这样的功能,但是Java NIO实现起来繁琐,而是它的Future, Channel等控制起来并不那么精细,会存在缺陷。
  5. Netty在Java NIO基础上,加入了自定义的Future, ChannelFuture,ChannelFutureLisener,对整个过程的监控,回调,对执行过程的精确把控。
  6. Netty因为作了高层次的抽象,这样开发者使用Netty的时候,就会非常简单。如果要求不是很高的话,甚至可以对Netty不用知道太多细节,快速搭建自己的网络程序。如果要求高的话,就需要理解Netty启动过程发生了,做了哪些准备工作。真正重要的是:它对能够考虑到的问题,是怎么解决的,为什么要这样解决。
  7. 其实,会用和知道工作过程,都差不多。但是,如果想知道为什么这么做的话,就需要先越过工作过程的小山坡,然后探寻为什么这么设计。
  8. 为什么这么设计,是因为传统的做法,在某些场景下,有缺陷。事物一步步发展变更,最后,某个大牛一篇论文阐述某个理论可以解决这个问题。比如Reactor反应器模式。这个时候,Netty跳了出来,把这个理论进行了实践,也不一定是高深莫测的内因,有时候是没有内因的。就像Cardano对响尾蛇论文的实践一样(Cardano的共识算法)。
  9. 规律就是,事物发展变化,理论论文出来,后续很多开源框架进行了实践,最后这个框架。解决痛点问题,概念简单易用,有社区就会成为顶级项目,就像Netty。
  10. 这个规律在编写某个具体业务逻辑同样适用。当事物只有一个两个的时候,if else也能够应对,但是,当变多的时候,就会失控,然后就需要某个设计模式来应对这样的情况。刚开始的时候,没有必要去考虑这么多,慢慢地,自然而然地需要作出改变优化。其实,Netty的来源过程也跟这个差不多。

小结
  1. Netty在“巨人的肩上”,Reactor反应器模式和java.nio包提供的API的基础上,实现了一个高性能的Java网络编程框架。Netty屏蔽了底层的复杂度和细节,开发者可以专注于业务逻辑。
  2. Netty的出现过程。跟传统I/O和NIO和Reactor模式有莫大的关系。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值