摘要:内存分配 Netty内存池的核心设计借鉴了jemalloc的设计思想。jemalloc是由Jason Evans在FreeBSD项目中实现的高性能内存分配器,其核心优势在于通过细粒度内存块划分与多层级缓存机制,降低内存碎片率并优化高并发场景下的内存分配吞吐量。 Netty基于jemalloc的多Ar
阅读全文
摘要:内存池:精打细算的内存管家 在高性能系统(如网络服务器)的极致优化中,当处理器和I/O的瓶颈被逐一攻克后,内存管理便成为决定系统延迟和吞吐量的最后一道,也是最关键的一道关隘。传统的内存分配方式在这种场景下显得力不从心,催生了通过内存池(Memory Pool)作为管理策略。 在C/C++或Java等
阅读全文
摘要:Reactor单线程模型 在Reactor单线程模型中,所谓的“单线程”主要针对I/O操作而言,即所有的I/O操作(如accept()、read()、write()和connect())都在同一个线程上完成。然而,在当前的单线程Reactor模型中,不仅I/O操作由Reactor线程处理,非I/O的
阅读全文
摘要:事件驱动 事件驱动(Event Driven)是一种核心的编程范式,其根本特征是控制反转(Inversion of Control,IoC)。在这种模型中,程序的执行流不再由代码的顺序调用决定,而是由一系列异步发生的事件来驱动。应用程序的角色从主动轮询或等待,转变为被动地对事件做出响应,这构成了现代
阅读全文
摘要:I/O多路复用(I/O Multiplexing)是一种允许单个线程同时监视多个文件描述符的I/O模型。其核心价值在于,它将应用程序从低效的I/O等待中解放出来,实现了“一次等待,响应多个事件”的高效并发模式。 要理解其优势,需要对比非阻塞I/O的局限性。虽然非阻塞I/O能避免线程在数据未就绪时阻塞
阅读全文
摘要:I/O交互流程 在LINUX中,内核空间和用户空间都位于虚拟内存中。LINUX采用两级保护机制:0级供内核使用,3级供用户程序使用。每个进程都有独立的用户空间(0~3G),对其他进程不可见,而最高的1G虚拟内核空间则由所有进程和内核共享。 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间。由
阅读全文
摘要:RPC框架如同构建服务大厦的神经网络,承担着海量服务间通信的重任。它优雅地屏蔽了底层网络通信的复杂性,使开发者能聚焦于业务逻辑的创造。然而,在这份优雅之下,RPC框架的网络模型设计却是决定系统吞吐量、延迟和资源利用率的命脉,其核心在于在有限的硬件资源与无限的数据洪流之间,建立一座高效、动态的桥梁。
阅读全文
摘要:序列化:数据跨越边界的翻译官 序列化(Serialization)用于描述RPC服务接口和数据结构。在RPC通信中,客户端和服务器之间传输的数据通常是结构化的,如调用方法、请求参数、返回值等。这些结构化数据需要通过序列化过程转换为二进制流,以便在网络中进行传输。 目前,常见的跨语言序列化编码方式包括
阅读全文
摘要:自研RPC协议:为性能而生的赛道利器 尽管gRPC凭借其标准化、跨语言和基于HTTP/2的强大特性,在公网和云原生环境中大放异彩,但在某些特定的内网环境中,对性能、延迟和资源占用的要求可能更为苛刻。HTTP/2虽然高效,但其帧结构和头部处理机制相较于专为内网设计的极简协议,仍可能引入不必要的开销。
阅读全文
摘要:gRPC:云原生时代的通信标准 gRPC将HTTP/2作为其传输层,并在此基础上定义了自身的通信语义。gRPC支持四种服务方法类型,它们都映射到HTTP/2的流模型上。 1)Unary RPC: 客户端发送单个请求,服务器返回单个响应(类似传统请求-响应)。 2)Server Streaming R
阅读全文
摘要:头部压缩 (HPACK) 在HTTP/1中,每个请求和响应都会发送大量重复的头部信息,比如 Cookie、User Agent、Accept 等,会使得大量带宽被这些冗余的数据占用。为了解决这个问题,HTTP/2引入了HPACK算法来压缩头部信息。HPACK算法有两个主要的特性。 1)静态表(Sta
阅读全文
摘要:云原生计算基金会(Cloud Native Computing Foundation,CNCF)是一个非盈利的开源组织,专注于推动云原生计算的发展和标准化。而gRPC(Google Remote Procedure Call)是由Google发起并开源的高性能、跨语言RPC框架。2017年,Goog
阅读全文
摘要:服务间通信的效率与可靠性是系统性能和稳定性的关键。远程过程调用(RPC)作为跨进程、跨机器交互的核心机制,其传输协议的设计至关重要。一个优秀的RPC传输协议需要应对三大挑战:1)跨语言、跨平台的数据表示与解析;2)保障网络传输的完整性、顺序性与效率;3)在服务间建立清晰统一的调用约定。 本文将从 H
阅读全文