Netty逻辑架构与核心组件 Netty逻辑架构与核心组件Netty官网 里有一张 Netty 的整体功能模块结构图,如下: Netty 被分为三大模块,分别是 Core、Protocol Support 和 Transport Services。 Core 即核心层,提供了底层网络通信的通用抽象和实现,包括可扩展的事件模型、通用的通信 API、支持零拷贝的 ByteBuffer 等。 Protocol Support 即 2026-05-03 #Netty
Netty如何处理半包和粘包(附自定义通信协议实践) Netty如何处理半包&粘包TCP 传输协议是面向流的,没有数据包界限。当程序要发送一个较大的包时,由于滑动窗口以及 MTU 的影响,有可能会拆分为多个包传输;当程序要发送较小的包时,为了提高通信效率,Linux 的 Nagle 算法可能会将多个报文合并成一个大的报文进行发送。 MTU(Maxitum Transmission Unit) 是链路层一次最大传输数据的大小。 MTU 一般来说 2026-05-02 #计算机网络 #Netty
Netty如何支持3种Reactor Netty如何支持3种ReactorJava 并发包作者 Doug Lea,在 Scalable I/O in Java 一文中阐述了服务端开发中 I/O 模型的演进过程,也被 Netty、Mina 等大多数高性能 IO 服务框架所采用。 Reactor 是一种开发模式,核心流程如下: 注册感兴趣的事件; 扫描是否有感兴趣的事件发生; 对感兴趣事件做出相应的处理。 在网络I 2026-04-30 #IO模型 #Netty
选择合适的RPC 选择合适的RPCRPC(Remote Procedure Call)即远程过程调用,随着微服务的兴起,每个服务都拥有自己的数据库,负责各自的模块,例如 keystone(认证服务)负责用户信息、权限认证的内容,workOrder(工单服务)负责工单的流程流转。在 workOrder 中,可能也需要查询一些用户的信息,但用户信息表并不在该服务的数据库中,因此就需要调用 keystone 服务来获取用 2026-04-29 #计算机网络 #RPC
IO多路复用不同实现及对比 IO多路复用不同实现及对比select、poll、epoll 都是用来实现 IO 多路复用的,而多路复用发展的背景就是 socket 网络通信下提升系统的并发处理能力,单纯依靠多进程或多线程来实现对硬件要求很高,而且上限比较低,采用 IO 多路复用,可以很轻易的处理上千的并发。 虽然多路复用的机制有多种,但每一种都有一些通用的我们需要关注的问题: 该机制监听套接字上的什么事件 该机制能监听多少套 2026-04-28 #IO模型
详解5种IO模型 详解五种IO模型IO 模型是网络编程的基础,几乎所有的高性能的中间件都会提到使用了高效的 IO 模型(Redis、Kafka、Tomcat、Nginx 等)。 前言Unix 系统下的五种基本 I/O 模型大家应该都有所耳闻,分别是: blocking I/O(同步阻塞IO,BIO) nonblocking I/O(同步非阻塞IO,NIO) I/O mult 2026-04-28 #IO模型
系统性能优化之锁篇 系统性能优化之锁篇多线程下为了确保程序不会出错,必须加锁后才能访问共享资源。锁也是有层级之分的,在不同的场景下加不同的锁,对系统性能也有着很大影响。 互斥锁与自旋锁互斥锁与自旋锁是最底层的两个锁,其他的锁几乎都是基于此实现的。**互斥锁加锁失败时会释放CPU进入阻塞状态,自旋锁则会忙等待**。 **当无法确定锁住的代码需要执行多久时,应当首选互斥锁。**互斥锁是一种独占锁,当被线程取得后,除非线程 2026-04-27 性能优化 > 通用 #性能优化 #锁
系统性能优化之磁盘篇 系统性能优化之磁盘篇磁盘作为计算机中速度最慢的硬件之一,常常是系统的性能瓶颈,优化磁盘一般能得到明显的提升~ 文章前部分以如何高效的传输文件来讨论针对磁盘的优化技术,如零拷贝、直接 IO、异步 IO等,后部分介绍 SSD 和 HDD 的区别,探讨如何编写对 SSD 友好的程序。 最简单的网络传输 最简单的方式的当然是找到文件存储的路径,创建一个固定的大小的缓冲区,每次读取缓冲区大小的文件内容, 2026-04-27 性能优化 > 通用 #性能优化 #磁盘
Netty如何高效使用内存 Netty 如何高效使用内存系统性能优化之内存篇 中提到了如何更好的使用内存,本篇以 netty 为例赏析 netty 中的内存使用技巧。 基本类型 vs 包装类Java 中的对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。在64位虚拟机中对象头就需要占用64bit的空间,比一些基本类型(byte、short、 2026-04-27 源码分析 > Netty #源码分析 #Netty #内存
数字证书与HTTPS 数字证书与HTTPS我们知道网络包是可以被截获的,那么如果涉及到敏感信息的发送,例如各种密码,就不能明文在网络上传输了,因此需要进行加密,即在网络上传输密文,到服务端后服务端经过解密进行后续操作。 加密加密分为两种 对称加密,双方使用相同的秘钥或者算法来进行加密解密,例如异或操作,客户端发送 111 给服务端,使用全 1 字符串进行异或操作,得到 000,服务端收到 000 后,使用全 1 字符 2026-04-26 #计算机网络 #HTTPS