Netty 源码解析 1. Reactor 模型 在解析 Netty 源码之前,我们首先要搞清楚 Reactor 模型。因为现在的网络通信框架,大多数都是基于 Reactor 模型进行设计和开发的,Netty 也不例外。 1.1 Reactor 单线程模型 Selector…
由于 Netty 的底层是 NIO,所以在读 Netty 源码之前,首先了解一下 NIO 网络编程 相关知识。 直接看官方的注释,因为注释是最权威的。 1. NIO 简介 NIO,New IO(官方),Non-blocking IO(非官方),是 JDK1.4 中引入的一种新的 IO 标准,是一种同步非阻塞 IO。NIO 是以 块…
手写 Tomcat 确切地说,这里要手写的是一个 Web 容器,一个类似于 Tomcat 的容器,用于处理 HTTP请求。该 Web 容器没有实现 JavaEE 的 Servlet 规范,不是一个 Servlet 容器。但其是类比着Tomcat 来写的,这里定义了自己的请求、响应及 Servlet,分别命名为了…
1. 手写 RPC 框架 1.1 RPC 简介 RPC,Remote Procedure Call,远程过程调用,是一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。在 OSI 网络通信模型中,RPC 跨越了传输层(第四层,传输协议 TCP/ UDP ,即通过 ip+port 进行通信)和应用层(第七层,传输协议有…
一、背景 Stream 类型是 redis5 之后新增的类型,在这篇文章中,我们实现使用 Spring boot data redis 来消费 Redis Stream 中的数据。实现独立消费和消费组消费。 二、整合步骤 1、引入jar包 <dependencies> <dependency>…
前言 Seata 是 阿里巴巴开源的分布式事务中间件,以高效并且对业务0侵入的方式,解决微服务场景下面临的分布式事务问题。 事实上,官方在 GitHub 已经给出了多种环境下的 Seata 应用示例项目,地址: https://github.com/seata/seata-samples 。 为什么笔者要重新写一遍呢,主要原因有两点:…
来源:https://medium.com/@egorponomarev/spring-boot-3-2-with-virtual-threads-and-graalvm-out-of-the-box-1911d3ebf0b6 Spring Boot 3.2 已经正式发布 ,让我们用 Java 21、GraalVM 和虚拟线程来尝试一下。 Spring…
Netty 入门 1. Netty 概述 1.1 Netty 简介 Netty 官网上可以看到最权威的介绍: Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能服务器和客户端。 Netty 是一个 NIO 客户机-服务器框架,它支持快速、简单地开发网络应用程序,如服务器和客户机。它大大简化了网络编程,如 TCP 和 UDP…
TCP 的拆包与粘包 1. 拆包粘包简介 Netty 在基于 TCP 协议的网络通信中,存在拆包与粘包情况。拆包与粘包同时发生在数据的发送方与接收方两方。 发送方通过网络每发送一批二进制数据包,那么 这次所发送的数据包就称为一帧,即Frame 。在进行基于 TCP的网络传输时,TCP…
Netty 高级应用 本章会通过代码实例的方式将 Netty 常见应用场景中的知识点进行讲解。 1. WebSocket 长连接 1.1 WebSocket 简介 WebSocket 是 HTML5 中的协议,是构建在 HTTP 协议之上的一个网络通信协议,其以长连接的方式实现了客户端与服务端的 全双工通信 。 HTTP/1.1 版本协议中具有 keep-…