Just Do It
Netty 的心跳机制与断线重连 Netty 的心跳机制与断线重连
1. 什么是心跳机制 HeartBeat在 TCP 长连接 keepAlive 的应用场景下,client 端一般不会主动关闭它们之间的连接,Client 与 Server 之间的连接如果一直不关闭的话,随着客户端连接越来越多,Server
2022-01-02
Netty 是如何解决 TCP 粘包/拆包问题的 Netty 是如何解决 TCP 粘包/拆包问题的
1. 什么是 TCP 粘包/拆包在 RPC 框架中,TCP 粘包和拆包问题是必须解决一个问题,因为 RPC 框架中,各个微服务相互之间都是维系了一个 TCP 长连接,比如 Dubbo 就是一个全双工的长连接。由于微服务往对方发送信息的时候,
2022-01-02
Codec 编码与解码 Codec 编码与解码
1. 什么是 Codec从网络传输的角度来讲,数组总是以字节的格式在网络之中进行传输 每当源主机发送数据到目标主机时,数据会从本地格式被转换成字节进行传输,这种转换被称为编码,编码的逻辑由 编码器 处理。 每当目标主机接受来自源主机的数
2022-01-02
Bootstrap 详解 Bootstrap 详解
在了解 ChanelPipeline,EventLoop 等组件之后,我们需要将这些组件组织起来,使其成为一个可运行的应用程序。 这里就需要引导 Boostrap 相关组件了。 1. Boostrap 类引导类的层次结构包括一个抽象的父类和
2022-01-02
Netty Reactor 线程模型与 EventLoop 详解 Netty Reactor 线程模型与 EventLoop 详解
1. EventLoop 事件循环事件循环正如它的名字,处于一个循环之中。我们以前在编写网络程序的时候,会使我们处理连接的逻辑 处于一个死循环之中,这样可以不断的处理客户端连接。 下面的代码显示了典型的 EventLoop 逻辑: whil
2022-01-02
ChannelHandler 与 ChannelPipeline 详解 ChannelHandler 与 ChannelPipeline 详解
我们在上一章研究的 bytebuf 是一个容器用来“包装”数据。在本章我们将探讨这些容器如何通过应用程序来移动,传入和传出,以及他们的内容是如何处理的。 本章主要内容 Channel ChannelHandler ChannePipe
2022-01-02
ByteBuf 详解 ByteBuf 详解
正如我们先前所指出的,**网络数据的基本单位永远是 byte(字节)**。Java NIO 提供 ByteBuffer 作为字节的容器,但这个类是过于复杂,有点难以使用。 Netty 中 ByteBuffer 的替代是 ByteBuf,
2022-01-02
Transport 详解 Transport 详解
1. 概述在网络中传递的数据总是具有相同的类型:字节。 这些字节流动的细节取决于网络传输,它是一个帮我们抽象底层数据传输机制的概念,我们不需要关心字节流动的细节,只需要确保字节被可靠的接收和发送。 当我们使用 Java 网络编程时,可能会接
2022-01-02
Netty 核心组件总览 Netty 核心组件总览
1. 核心组件概述下面枚举所有的 Netty 应用程序的基本构建模块(核心组件),包括客户端和服务器: Bytebuf(字节容器) Bootstrap 和 ServerBootstrap (启动引导类) Channel(网络操作抽象类)
2022-01-02
Netty 架构设计与功能特性 Netty 架构设计与功能特性
1. Netty 架构 传输服务 支持 BIO 和 NIO 容器集成 支持 OSGI、JBossMC、Spring、Guice 容器 协议支持 HTTP、Protobuf、二进制、文本、WebSocket 等一系列常见协议都支持。 还支
2022-01-02
第一个 Netty 应用 第一个 Netty 应用
在本节中,我们将构建一个完整的的 Netty 客户端和服务器。 1. 导入 Netty 依赖新建一个 Maven 项目,并导入 Netty 4.x 依赖: <dependencies> <dependency>
2022-01-02
从 BIO、NIO 到 Netty 从 BIO、NIO 到 Netty
1. BIO① 传统的阻塞式通信流程早期的 Java 网络相关的 API(java.net包) 使用 Socket(套接字)进行网络通信,不过只支持阻塞函数使用。 要通过互联网进行通信,至少需要一对套接字: 运行于服务器端的 Server
2022-01-02