Netty之初识

简介: Netty之初识

前言

在现在的工作中第一次接触到了 Netty, 也是当前非常流行的 NIO框架, Netty在互联网领域, 游戏行业, 通信IM行业, 大数据分布式计算等领域都获得了广泛的应用

介绍

Netty介绍:

  • Netty是由JBOOS提供的一个开源框架
  • Netty是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可用的网络IO程序
  • Netty主要针对在TCP协议下, 面向Clients端的高并发应用, 或者在Peer-to-Peer场景下的大量数据持续传输的应用
  • Netty本质上是一个NIO框架, 适用于服务器通讯相关的多种应用场景

Netty的优势

Netty对自带的 JDK NIO进行了封装, 解决了直接使用 NIO的一些问题:

  • NIO的类库和API太过繁杂
  • 使用原生 NIO需要熟悉多线程编程, 因为 NIO编程涉及到 Reactor模式, 必须对多线程和网络编程非常熟悉, 才能写出高质量的 NIO程序
  • 原生 NIO开发难, 工作量大
  • JDK NIO中存在 Epoll bug, 会导致 Selector空轮询, CPU直接 100%

易上手使用:

  • 没有其他的依赖
  • 文档丰富的 Javadoc, 文档和示例
  • 网上众多 Netty实现的 Demo和项目可以很好的借鉴学习

性能:

  • 高性能 吞吐量更高
  • 延迟更低
  • 减少资源消耗 最小化内存复制(零拷贝)

对各种协议的全面支持:

  • TCP、UDP、SCTP、UDT

Netty的常见使用场景

1)互联网行业:在分布式系统中,各个节点之间需要远程服务调用,高性能的 RPC 框架必不可少,Netty 作为异步高性能的通信框架,往往作为基础通信组件被这些 RPC 框架使用。

典型的应用有:Hadoop的RPC框架Avro、RocketMQ以及主流的分布式通信框架Dubbox等等。

后续等 Netty系列结束之后有机会的话也会出一个专门用来学习 RPC的系列文章

2)游戏行业:无论是手游服务端还是大型的网络游戏,Java 语言得到了越来越广泛的应用。在以前很多项目都是使用 mina来作为通信模型, 但是由于 mina基本停止更新, 社区活跃度下降, 所以现在的技术选型基本都是转向社区更为活跃的 Netty。

Netty 作为高性能的基础通信组件,它本身提供了 CP/UDP 和 HTTP 协议栈。非常方便定制和开发私有协议栈,账号登录服务器,地图服务器之间可以方便的通过 Netty 进行高性能的通信。

3)大数据领域:在大数据领域内, 大多数框架都对 Netty进行了深度应用

例如经典的 Hadoop的高性能通信和序列化组件 Avro的 RPC框架,默认采用 Netty进行跨界点通信,它的 Netty Service基于 Netty框架二次封装实现。



目录
相关文章
netty
netty
67 0
|
3月前
|
设计模式 网络协议 NoSQL
netty(四)
netty(四)
|
4月前
|
网络协议 前端开发 安全
Netty
Netty
246 1
|
3月前
|
机器学习/深度学习 分布式计算 搜索推荐
Netty(一)
Netty(一)
|
4月前
|
JavaScript 网络安全
Netty在Firbase中的使用
这篇文章探讨了Netty在Firebase实时数据同步服务中的应用,包括长轮询、HTTP 1.1 keep-alive和流水线化、控制SSL处理器等,展示了Netty如何支持Firebase处理高并发的网络通信和多种协议。
48 1
|
6月前
|
消息中间件 编解码 Java
Netty介绍
Netty介绍
61 4
Netty介绍
|
7月前
|
存储 安全 Java
为什么Netty要造FastThreadLocal?
Netty 的 FastThreadLocal 是一种高效的线程局部变量,设计用于解决标准 ThreadLocal 的性能和内存泄漏问题。FastThreadLocal 通过使用数组而非哈希表存储数据,避免了哈希冲突带来的性能损耗,查询效率达到 O(1)。此外,FastThreadLocal 提供了 remove() 方法和 FastThreadLocalRunnable 类,以防止内存泄漏,确保在执行完成后自动清理对象。相比于 ThreadLocal,FastThreadLocal 具有更高的性能和安全性。
|
7月前
|
存储 Java API
Netty指南
Netty指南
88 2
|
7月前
|
设计模式 网络协议 Java
Netty | 一起来了解了解Netty吧
Netty | 一起来了解了解Netty吧
75 0
|
安全 Java Linux
Netty4 使用总结
Netty4 使用总结
58 0