【1. Netty简介】

1. 什么是Netty

Netty是由JBOSS提供的一个Java开源通讯框架,用以快速开发高性能,高可靠的网络IO程序。它底层很好的封装了Socket,处理网络通讯的一个开源通讯框架。通俗的说,Netty就是解决两个系统之间互相通信的一个框架。

在Java领域Netty被广泛的应用,Tomcat,Dubbo,RocketMQ,Zookeeper,ElasticSearch等等这些中间件的网络通讯框架都是Netty实现的。

其中Netty只是对Java原生的通讯框架进行了高度的封装,如下图所示:

2. 市场占比

在Java语言中Netty基本上是一只独大,涉及到网络停训基本上都是使用Netty,很少去直接使用NIO或者或者其它类似的第三方框架,目前和 Netty 同一级别的框架主要是 mina,其实 mina 和 Netty 都是同一个人开发的,Netty 比 mina 更晚出现,因此推荐 Netty。

相比 mina 那么 Netty 的优势是什么呢?

1. Mina 将内核和一些特性的联系过于紧密,使得用户在不需要这些特性的时候无法脱离,相比之下性能会有所下降,Netty 解决了这个设计问题;

2.Netty 的文档更清晰,很多 Mina 的特性在 Netty 里都有;

3.Netty 比 Mina 使用起来更简单,上手只需要掌握模板代码 + 自定义 Handler 即可;

4. 它们的架构差别不大,Mina 靠 apache 生存,而 Netty 靠 jboss。Netty 有对 google protocal buf 的支持,有更完整的 IOC 容器支持。

# 3. Netty的特性

特性说明
完美设计基于灵活、可扩展的事件驱动模型,可以灵活切换底层的线程模型、IO 模型等
高性能高吞吐量、低延迟,尽量减少不必要的内存拷贝
健壮性1. 消除由于慢,快,或重载连接产生的 OutOfMemoryError;2. 消除经常发生在 NIO 在高速网络中的应用中的不公平的读 / 写比
易用性1. 完善的文档;2. 活跃的社区;3. 简单的 API 让开发者能够快速入门
内置功能1. 支持多种协议;2. 内置很多的编解码器;3. 内置很多的拆包器
心跳检测I/O 超时和 idle 状态检测
安全性1. 解决了 NIO 存在的空轮询问题;2. 更可靠的 OutOfMemoryError 预防;3. 应用程序的关闭更简单,更安全

4. Netty版本

目前 Netty 主要有三个大的版本

  • 3.x 版本;
  • 4.x 版本;
  • 5.x 版本;
  • 三大版本的差异比较大,目前项目开发的主流版本是 4.x,因此也建议大家主要学习 4.x 这个版本。

5. 为什么要学习Netty

  1. 掌握 Netty 及其原理,可以为自己找工作、面试时加分。并且让自己的技能得到进阶,是初中级迈向高级的门槛;
  2. 有助于学习和理解主流中间件的架构思想,很多的中间件都是基于 Netty 去开发的,比如:Dubbo;
  3. Netty 用来系统网络通信功能,是系统的基石,往往决定一个系统的性能,能否扛得住并发;
  4. 对于学习和理解分布式架构会有很大的帮助,分布式架构下最核心环节就是应用之间的通讯。

6.学习基础

Netty 非常的复杂,不建议刚参加工作的同学直接学习它,这样会给自己在学习上增加难度。

列举一些学习 Netty 之前最好先掌握的技术点:

  1. 掌握多线程、线程池的使用;
  2. 掌握传统 IO(BIO)的使用,以及了解网络 IO 和磁盘 IO 的基本使用;
  3. 掌握 Socket 的客户端和服务端之间通讯实现,了解其缺点是什么;
  4. 掌握 NIO 的思想,和 BIO 比较 NIO 的优势以及如何基于 NIO 去操作磁盘文件和网络通讯,核心组件 Buffer、Channel、Selector 的使用;
  5. 掌握什么是直接缓冲区、非直接缓冲区、零拷贝;
  6. 掌握什么是序列化,序列化的原理、常用技术;
  7. 了解 TCP 协议、Http 协议之间的联系、大概原理;
  8. 了解 IO 的多路复用大致原理,Epoll 的大概原理;
  9. 了解什么是长连接、短连接的概念和区别,以及它们的应用场景。

7.疑惑?

1. 什么是内存拷贝?

2. NIO 存在的空轮询问题?

3. IO 的多路复用大致原理?

4. Epoll 的大概原理?

5. 什么是长连接、短连接的概念和区别,以及它们的应用场景?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值