netty基础知识梳理和总结

怎么通俗的理解Netty呢? 目录 Netty(3.X) 有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器等等。 如果你想知道Nginx是怎么写出来的,如果你想知道Tomcat和Jetty是如何实现的,如果你也想实现一个简单的Redis服务器,那都应该好好理解一下Netty,它们高性能的原理都是类似的。 看一下传统的HTTP服务器的原理: 创建一个ServerSocket,监听并绑定一个端口 一系列客户端 阅读详情

由来

Netty是由JBOSS公司提供的一个java开源框架。
是一个基于NIO的客户、服务器端编程框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

netty整体结构

在这里插入图片描述

核心功能
可扩展的事件模型
  • 提供灵活且可扩展的事件处理机制,适应多种应用场景。
统一的通信 API
  • 统一接口:无论是 HTTP 还是 Socket,均使用统一的 API,简化了操作流程。
  • 易用性:通过一致的接口设计,降低了开发复杂度。
零拷贝机制与字节缓冲区
  • 高效数据传输:采用零拷贝机制,减少数据在内存中的拷贝次数,提升性能。
  • 字节缓冲区:优化数据存储和读取效率。
传输服务
  • Socket,基于TCP
  • Datagram(数据报),基于UDP
  • HTTP 协议
  • In-VM Pipe(管道协议)
协议支持
  • HTTP 与 WebSocket:支持标准的 HTTP 和 WebSocket 协议。
  • SSL 安全套接字协议:提供安全的通信保障。
  • Google Protobuf:支持高效的序列化框架。
  • 压缩支持:
    • 支持 zlib 和 gzip 压缩,优化传输效率。
  • 大文件传输:支持高效的大文件传输能力。
  • RTSP(实时流传输协议):支持 TCP/IP 协议体系中的应用层协议,适用于实时流媒体场景。
  • 二进制协议支持:支持自定义二进制协议,并提供完整的单元测试。

netty的IO模型

Netty就是使用Java的NIO实现了Reactor线程模型是其实现高性能的一个核心点。
Netty是基于NIO2的IO模型(IO多路复用模型,非循环进行read的系统调用的原始NOBlock IO模型)。

  • 常见的Reactor线程模型有三种
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Netty就是结合了NIO的特点,应用了Reactor线程模型所实现的。

在这里插入图片描述

  • 在Netty模型中,负责处理新连接事件的是BossGroup,负责处理其他事件的是WorkGroup。Group就是线程池的概念。
  • NioEventLoop表示一个不断循环的执行处理任务的线程,用于监听绑定在其上的读/写事件。NioEventLoop就是Group里面的工作线程。
  • 通过Pipeline(管道)执行业务逻辑的处理,Pipeline中会有多个ChannelHandler,真正的业务逻辑是在ChannelHandler中完成的。

netty核心组件

Channel

可以理解为是socket连接,在客户端与服务端连接的时候就会建立一个Channel。
常用的 Channel 类型:

  • NioSocketChannel,NIO的客户端 TCP Socket 连接。
  • NioServerSocketChannel,NIO的服务器端 TCP Socket 连接。
  • NioDatagramChannel, UDP 连接。
  • NioSctpChannel,客户端 Sctp 连接。
  • NioSctpServerChannel,Sctp 服务器端连接,这些通道涵盖了 UDP 和 TCP 网络 IO 以及文件IO。
EventLoop、EventLoopGroup
  • 在 Netty 中每个 Channel 都会被分配到一个 EventLoop。一个 EventLoop 可以服务于多个 Channel。
  • 每个 EventLoop 会占用一个 Thread,同时这个 Thread 会处理 EventLoop 上面发生的所有 IO 操作和事件
  • EventLoopGroup 是用来生成 EventLoop 的
ChannelHandler

ChannelHandler对使用者而言,可以说是最重要的组件了,因为对于数据的入站和出站的业务逻辑的编写都是在ChannelHandler中完成的。
在这里插入图片描述

  • ChannelInboundHandler 入站事件处理器
  • ChannelOutBoundHandler 出站事件处理器

例如:在 入站事件处理器中可以实现了channelRead方法,获取到客户端传来的数据
ChannelHandler只能完成编码解码处理、读写操作中的一种,所以ChannelHandler都是成组出现来完成功能。

ChannelPipeline

一个Channel包含了一个ChannelPipeline,而ChannelPipeline中维护了一个ChannelHandler的列表。
ChannelHandlerContext进行维护ChannelHandler与Channel和ChannelPipeline之间的映射关系。
在这里插入图片描述
ChannelHandler按照加入的顺序会组成一个双向链表

  • 入站事件从链表的head往后传递到最后一个ChannelHandler
  • 出站事件从链表的tail向前传递,直到最后一个ChannelHandler
  • 两种类型的ChannelHandler相互不会影响。
Bootstrap

Bootstrap是引导的意思,它的作用是配置整个Netty程序,将各个组件都串起来,最后绑定端口、启动Netty服务。
Netty中提供了2种类型的引导类,一种用于客户端(Bootstrap),而另一种(ServerBootstrap)用于服务器。
它们的区别在于:

  • ServerBootstrap 只需要绑定一个监听连接的端口,而 Bootstrap 则是需要远程节点的IP和端口
  • 客户端Bootstrap 只需要一个EventLoopGroup来实现消息的读取和写入,而ServerBootstrap则需要两个EventLoopGroup,一个来实现处理新连接事件,一个用来处理消息的读取和写入等事件。
Future

Future提供了一种在操作完成时通知应用程序的方式。这个对象可以看作是一个异步操作的结果的占位符,它将在未来的某个时刻完成,并提供对其结果的访问。

netty的bytebuf

bytebuf的内部构造

ByteBuf的三个指针:

  • readerIndex(读指针)
    指示读取的起始位置, 每读取一个字节, readerIndex自增累加1。 如果readerIndex 与writerIndex 相等,ByteBuf 不可读 。
  • writerIndex(写指针)
    指示写入的起始位置, 每写入一个字节, writeIndex自增累加1。如果增加到 writerIndex 与capacity() 容量相等,表示 ByteBuf 已经不可写。
  • maxCapacity(最大容量)
    指示ByteBuf 可以扩容的最大容量, 如果向ByteBuf写入数据时, 容量不足, 可以进行扩容

当从 ByteBuf 读取时,它的 readerIndex(读索引)将会根据读取的字节数递增。
同样,当写 ByteBuf 时,它的 writerIndex(写索引) 也会根据写入的字节数进行递增。

ByteBuf内部空间结构:
在这里插入图片描述

  • byteBuf.readByte(),内部通过移动readerIndex进行读取
  • byteBuf.writeInt(i);
  • discardReadBytes(),可以将已经读取的数据进行丢弃处理,就可以回收已经读取的字节空间,可写空间就会变大
  • clear() ,重置readerIndex 、 writerIndex 为0,需要注意的是,重置并没有删除真正的内容

bytebuf的使用模式

  • 堆缓冲区(HeapByteBuf)
    • 优点:内存的分配和回收速度比较快,可以被JVM自动回收
    • 缺点:进行socket的IO读或者写时,需要额外做一次内存复制,,将堆内存对应的缓冲区复制到内核Channel中,性能下降。
  • 直接缓冲区(DirectByteBuf),非堆内存
    • 优点:它写入或从Socket Channel中读取时,由于减少了一次内存拷贝(零拷贝),速度比堆内存块
    • 缺点:内存的分配和回收速度慢,并且如果不注意内存回收,会导致内存泄漏
  • 复合缓冲区,顾名思义就是将上述两类缓冲区聚合在一起。
    • 复合缓冲区的核心思想是通过逻辑上的组合,而不是物理上的合并,来管理多个缓冲区
    • 工作原理
      • 数据的逻辑组合:通过维护一个内部的组件列表(components),记录每个子缓冲区的引用和偏移量。每个子缓冲区可以是堆缓冲区或直接缓冲区。
      • 统一的读写接口:复合缓冲区对外提供了一个统一的读写接口,用户可以通过索引访问整个缓冲区的内容,而不需要关心底层是由哪些子缓冲区组成的。
    • 使用场景:在网络协议中,可能需要将头部(通常较小,适合堆缓冲区)和负载(通常较大,适合直接缓冲区)分开存储,但又希望以统一的方式操作。

ByteBuf的释放

  • 手动释放,就是在使用完成后,调用ReferenceCountUtil.release(byteBuf); 进行释放
  • 自动释放
    • 入站的TailHandler:Netty的ChannelPipleline的流水线的末端是TailHandler,默认情况下如果每个入站处理器Handler都把消息往下传,TailHandler会释放掉ReferenceCounted类型的消息。
    • 继承SimpleChannelInboundHandler,类中包含一个onUnhandledInboundMessage方法,会释放缓存
    • HeadHandler的出站释放,类似于入站

netty的零拷贝

所谓的零拷贝,就是取消用户空间与内核空间之间的数据拷贝操作,应用进程每一次的读写操作,都可以通过一种方式,让应用进程向用户空间写入或者读取数据,就如同直接向内核空间写入或者读取数据一样,再通过 DMA 将内核中的数据拷贝到网卡,或将网卡中的数据 copy 到内核。

Netty零拷贝主要体现在三个方面:

  • Netty的接收和发送ByteBuffer是采用DIRECT BUFFERS,使用堆外的直接内存(内存对象分配在JVM中堆以外的内存)进行Socket读写,不需要进行字节缓冲区的二次拷贝。如果采用传统堆内存(HEAP BUFFERS)进行Socket读写,JVM会将堆内存Buffer拷贝一份到直接内存中,然后写入Socket中。
  • Netty提供了组合Buffer对象,也就是CompositeByteBuf 类,可以将 ByteBuf 分解为多个共享同一个存储区域的 ByteBuf,避免了内存的拷贝。
  • Netty的文件传输采用了FileRegion 中包装 NIO 的 FileChannel.transferTo() 方法,它可以直接将文件缓冲区的数据发送到目标Channel,避免了传统通过循环write方式导致的内存拷贝问题。(类似于kafka的零拷贝)

Kafka的零拷贝

Kafka 和 Netty 都使用了零拷贝技术,但它们的应用场景和实现方式有所不同。以下是对两者的区别、优缺点的详细分析:


1. Kafka 的零拷贝

定义

Kafka 的零拷贝是指在数据传输过程中,尽量减少数据在用户空间和内核空间之间的拷贝次数。它主要依赖于操作系统提供的 sendfile 系统调用(Linux 环境下)来实现。

实现原理
  • 当 Kafka 从磁盘读取数据并发送到网络时,传统的方式需要经过多次数据拷贝:
    1. 数据从磁盘读取到内核缓冲区。
    2. 数据从内核缓冲区拷贝到用户空间缓冲区。
    3. 数据从用户空间缓冲区再拷贝回内核缓冲区(用于网络传输)。
    4. 数据通过网络接口发送出去。
  • 使用零拷贝后:
    • 数据直接从内核缓冲区通过 sendfile 系统调用传输到网络接口,避免了用户空间的参与,减少了两次拷贝操作。
优点
  1. 性能提升:减少了数据拷贝次数和上下文切换,显著提高了吞吐量。
  2. 降低 CPU 开销:避免了用户空间和内核空间之间的数据拷贝,降低了 CPU 的负担。
  3. 适合大数据传输:特别适用于 Kafka 这种需要频繁进行大文件传输的场景。
缺点
  1. 灵活性较低:零拷贝要求数据是连续存储的,且不能对数据进行修改。如果需要对数据进行处理(如加密、压缩等),则无法直接使用零拷贝。
  2. 依赖操作系统支持:需要底层操作系统提供 sendfile 或类似机制的支持。
【Netty系列】Netty高性能架构设计以及光速入门 关于这个问题,我贴一段官网的阐述:大概意思是:Netty 是一个 NIO 客户端服务器框架,使用它可以快速简单地开发网络应用程序,比如服务器和客户端的协议。具体来说,Netty就是对于Java NIO 的封装。 阅读详情

相关推荐

超详细Netty入门,看这篇就够了!

本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路。官方的介绍:Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。

DreamSun的博客 4995

搭建简单的Netty开发环境

今天准备学学声明显赫的Netty框架,自然要先学会怎么搭建一个简单的Netty开发环境啦。话不多说,下面进入正文。 编辑器方面自然是推荐IntelJ idea了,idea的强大不必多说,百度一下你就知道。哈哈 下面就是准备Netty的jar包了,如果你会maven的话自然是使用maven最为方便了。只需要在pom文件中导入以下几行 <!-- https://mvnrepository...

Stormer的博客 2万+

别再只看图了!代谢组学OPLS-DA分析,R2Y和Q2Y到底怎么看才不踩坑?

本文深入解析代谢组学OPLS-DA分析中的关键指标R2Y和Q2Y,揭示如何避免过拟合陷阱。通过详细解读模型解释能力(R2Y)和预测能力(Q2Y),结合置换检验方法,提供完整的模型评估流程与实战建议,帮助研究者获得可靠的分析结果。

weixin_42638178的博客 196

Netty(二)

Netty一、Netty概述1.1 原生NIO存在的问题1.2 Netty官网说明 一、Netty概述 1.1 原生NIO存在的问题 NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。 需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor模式,你必须对多线程 和网络编程非常熟悉,才能编写出高质量的 NIO 程序。 开发工作量和难度都非常大:例如客户

残影的博客 1387

STM32F103四位数码管动态显示实战:从硬件连接到代码调试(附Proteus仿真)

本文详细介绍了STM32F103驱动四位数码管的动态显示技术,从硬件连接到代码调试的全过程。内容包括共阴/共阳数码管的区别、GPIO配置、动态显示原理及优化方法,并附有Proteus仿真验证。通过实战案例,帮助开发者快速掌握STM32数码管动态显示的核心技术。

weixin_29168393的博客 469

手把手教你用6轴IMU跑通LIO-SAM:参数配置与代码修改保姆级教程

本文提供了一套完整的6轴IMU适配LIO-SAM的解决方案,包括参数配置与代码修改的详细步骤。从理解6轴与9轴IMU的关键差异入手,逐步指导如何调整核心配置文件params.yaml、重构utility.h关键函数、优化mapOptimization.cpp的位姿融合逻辑,并给出编译验证与性能调优建议,帮助开发者快速实现6轴IMU在LIO-SAM中的稳定运行。

weixin_28717807的博客 357

20191013 Netty基础知识学习

Netty学习预备 1、前言 使用Netty,可能是相对简单的。但是要搞懂Netty,可能就不是那么容易的事情了,因为要了解的基础知识太多了。如线程模型、IO迷行、NIO、传统IO等等。 笼统的去学习Netty,或者说没有一条学习线路去学习Netty,就会像我一样头脑混乱,即使遇到不懂的问题,可能也不知道要怎么提问。为什么连提问都不会?因为自己的思路都是不清晰的,各种东西糅杂在一起了。 我之前是这...

LLLLEE 的博客 312

Win10 / Win11 启用 Hyper-V 虚拟机详细教程(图文+命令行全攻略)

摘要:本文详细介绍Windows10/11系统启用Hyper-V虚拟化平台的方法,包含专业版/企业版的图形界面和PowerShell命令行操作,以及家庭版通过脚本强制启用的特殊方案。内容涵盖版本支持对比、操作步骤图解、常见问题解答和性能优化建议,帮助开发者快速搭建虚拟化环境进行多系统测试。附微软官方文档参考链接和详细操作示意图。

ElioXu 7061

java面试知识梳理

我是一个工作经验虽然少,但是喜欢学习的人。、 还没开始面试。这是我分享的一个自己准备的知识梳理。 为了之后找到一个好工作而准备。希望我能进一个大厂。 下面涉及到的所有视屏讲解都是免费的哦。 1.map掌握,底层实现原理 https://www.imooc.com/learn/1205 2.nio了解 https://www.imooc.com/learn/1118 3.netty了解(学习中) https://www.imooc.com/learn/941 4.dubbo了解 5.事务掌握 6.动态代理(学

weixin_39981289的博客 275

【第三只眼:Oracle通过归档日志查看系统的业务高峰sql】

根据oracle归档的业务高峰量,查找业务sql,进行优化

霍然的专栏 578

SAP_SD模块销售开票计划预收款系统配置及前台操作说明

在 SAP SD 中,开票计划(Billing Plan)是一种允许根据时间节点或里程碑对销售订单进行分期开票的功能。其中最常见的一种应用就是预收款(Down Payment Billing),即在销售订单中直接定义某个百分比或金额作为预收款,系统在开票时自动生成预收账单。大额合同或长期项目型销售(先收 20%,交货前收 30%,交货后收 50%)。分期付款模式(分阶段收款)。必须预收款才能安排生产或交货的业务。后台路径:SPRO—销售与分享—销售—销售凭证—销售凭证项目—定义项目类别。

我小时候很黑的博客 1409

分布式系统中ACID和CAP有什么区别?真的太香了!

开头 Netty 作为当前流行的 NIO 框架,在游戏、大数据通讯,云计算、物联网等领域都有广泛的应用,大家熟知的 Dubbo,底层用的就是 Netty。尤其在高性能 RPC 方面,Netty 更是必不可少。然而,想要将 Netty 真正掌握并精通难度却不小。一些学习者可能会遇到这些问题: 多线程编程、Socket 通信、TCP/IP 协议栈等知识掌握不扎实,学习过程比较吃力; 学习了不少理论知识,但真正跟具体项目结合在一起,解决实际问题时,又感觉比较棘手; 调用过程中遇到问题,不会定位,基本靠网上搜索,

m0_56824583的博客 171

【导航理论&实战篇】四足机器人弹簧倒立摆(SLIP)动力学模型

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人动力学模型-VMC、SLIP和浮动机体模型做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章四足机器人弹簧加载倒立摆(SLIP)动力学模型是一种用于描述和分析四足机器人在运动过程中动态特性的理论模型。这种模型将四足机器人的腿部简化为弹簧,而机器人的身体则被视为一个倒立摆,这样的抽象使得研究者能够更容易地分析和控制机器人的运动。提示:以下是本篇文章正文内容。

qq_35635374的博客 805

【进阶】进阶网站文章整理 待补充

刷题 1.牛客网 刷题 https://www.nowcoder.com/ 2.力扣 算法 https://leetcode-cn.com/ 3.Java 学习/面试指南 https://snailclimb.gitee.io/javaguide/#/ 待补充

我是Superman丶的博客 199

学Simulink--基础微电网场景实例:基于Simulink的微电网黑启动过程建模与仿真

黑启动(Black Start)是指在全系统停电(无电压、无频率)状态下,微电网依靠内部电源自主恢复供电的能力。🌩️典型场景主网长时间故障自然灾害导致区域停电计划检修后重启❗挑战无参考电压/频率 → 逆变器无法锁相负荷逐级投入 → 需避免过流/过压多电源协调 → 防止环流或失步✅黑启动成功标准在30 秒内恢复关键负荷供电电压/频率稳定在范围内无设备损坏或保护跳闸🎯本文目标:手把手教你使用 Simulink + Simscape + Stateflow 搭建。

amy_mhd的博客 200

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

idea无法运行java程序

前言 这段时间一直在学习Netty相关知识,因为涉及知识点比较多,也走了不少弯路。目前网上关于Netty学习资料琳琅满目,不知如何下手,其实大家都是一样的,学习方法和技巧都是总结出来的,我们在没有找到很好的方法之前不如按部就班先从基础开始,一般从总分总的渐进方式,既观森林,又见草木。 Netty是一款提供异步的、事件驱动的网络应用程序框架和工具,是基于NIO客户端、服务器端的编程框架。所以这里我们先以NIO和依赖相关的基础铺垫来进行剖析讲解,从而作为Netty学习之旅的一个开端。 正文 梳理知识点,是快速提

青山绿轻舟 963

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java体系总结

Java技术体系总结涵盖了Java基础(Java运行原理、运行环境、Java特性、集合、线程、JVM、SPI)、Netty框架、Https原理、Spring框架、SpringBoot框架的知识整理

老杜的博客 1588

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JAVA知识体系学习知识点梳理

基本功 面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区别 说说反射的用途及实现 说说自定义注解的场景及实现 HTTP 请求的 GET 与 POST 方式的区别 session 与 cookie 区别 session 分布式处理 JDBC 流程 MVC 设计思想 equals 与 == 的区别 集合 List 和 Set 区别 List 和 Map 区别 Arraylist

GreatorMan的博客 269

一篇关于Netty相关的梳理总结

Netty 是一个基于 Java 的高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端。它简化了 TCP/IP、UDP 协议的实现,并提供了灵活的协议处理和事件驱动机制,广泛应用于高并发、低延迟的网络应用,如实时通信、在线游戏、大数据传输等场景

可乐加.糖 1222

netty原理梳理及netty相关实例

netty之原理梳理及相关实例 前言:netty之初学总结,主要是对netty原理的梳理及netty相关实例的整合。总结如下:一张图,一个项目。手动biu一下自己,好好学习,天天向上 原理图 这张原理图旨在提供一个netty的全局学习思路,需自行深入学习每个模块,作为底层框架的netty,想要很好的理解它,每个模块都值得深入研究哦。 相关实例整合项目 项目git地址 本项目仅用于学习交流,其中如有不当之处欢迎指正。 整个项目包括以下几个实例: BIO->NIO->NETTY过程演化对比实例(

swhuan007的博客 335

Netty 常用Api简单梳理

Bootstrap,ServerBootStrap 1.引导 一个Netty应用通常由一个BootStrap开始,主要作用是配置整个Netty程序,串联各个组件,Netty中BootStrap类是客户端程序的启动引导类,ServerBootStrap是服务端启动的引导类. 2.常见的方法有: ServerBootstrap group(EventLoopGroup parentGroup, Eve...

jym的博客 1万+

IM即时通讯系统[SpringBoot+Netty]——梳理(一)

IM即时通讯系统—梳理

weixin_52487106的博客 9721

【知识梳理】Netty知识梳理

Netty 是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。拥有比Java核心API更高的吞吐量以及更低的延迟。 阻塞IO缺点: (1)大量线程处于休眠状态 (2)需要为每个线程的调用栈分配内存 (3)上下文切换所带来的开销会非常麻烦 非阻塞IO (NIO) class java.nio.channels.Selector 是Java的非阻塞I/O......

victorzzzz的专栏 1578

Netty 核心源码解析

Netty 第一讲:Netty 架构与原理本文是《Netty 三讲》的第二讲:Netty 核心源码解析(部分),大纲如下:前言1. Netty 服务端启动过程源码剖析1.1. 执行 ne...

weixin_41385912的博客 1万+

Netty知识点梳理

概述 简介 应用场景 互联网行业 1.互联网行业:在分布式系统中,各个 节点之间需要远程服务调用,高性能 的 RPC 框架必不可少,Netty 作为异步 高性能的通信框架,往往作为基础通 信组件被这些 RPC 框架使用。 2.典型的应用有:阿里分布式服务框架 Dubbo 的 RPC 框架使用 Dubbo 协议进 行节点间通信,Dubbo 协议默认使用 Netty 作为基础通信组件,用于实现各 进程节点之间的内部通信 游戏行业 1.无论是手游服务端还是大型的网络游戏, Java 语言得到了越来越广泛的应用

sukisabishi的博客 336

软件开发技术栈整理

耗尽无穷岁月 踏遍四海八荒 梳理了如下知识点。

Mr.xing的博客 3579
上一篇: 网络原理:一直搞不清的socket是什么?
下一篇: netty优雅的无锁化设计
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝多芬也爱敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值