Netty
Netty的学习笔记
奋斗小亮
DayDayUp
展开
-
第 10 章 Netty 核心源码剖析②
Pipeline Handler HandlerContext 创建源码剖析ChannelPipeline 调度 handler 的源码剖析源码剖析目的Netty 中的 ChannelPipeline 、 ChannelHandler 和 ChannelHandlerContext 是非常核心的组件, 我们从源码来分析Netty 是如何设计这三个核心组件的,并分析是如何创建和协调工作的.C...原创 2020-04-08 23:44:00 · 193 阅读 · 0 评论 -
第 11 章用 Netty 实现 Dubbo RPC
11.1 RPC 基本介绍RPC(Remote Procedure Call)— 远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样3) 常见的 RPC 框架有: 比较知名的如阿里的Dubbo、google的gRPC、Go语言...原创 2020-04-05 20:03:58 · 176 阅读 · 0 评论 -
第 10 章 Netty 核心源码剖析①
Netty 启动过程源码剖析Netty 接受请求过程源码剖析Pipeline Handler HandlerContext 创建源码剖析ChannelPipeline 调度 handler 的源码剖析Netty 心跳(heartbeat)服务源码剖析Netty 核心组件 EventLoop 源码剖析handler 中加入线程池和 Context 中添加线程池的源码剖析TODO…...原创 2020-04-05 20:04:22 · 165 阅读 · 0 评论 -
第 9 章 TCP 粘包和拆包及解决方案
9.1 TCP 粘包和拆包基本介绍TCP 是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的 socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle 算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边...原创 2020-04-04 11:01:10 · 260 阅读 · 0 评论 -
第 8 章 Netty 编解码器和 handler 的调用机制
8.1 基本说明netty 的组件设计:Netty 的主要组件有 Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipe 等ChannelHandler 充当了处理入站和出站数据的应用程序逻辑的容器。例如,实现 ChannelInboundHandler 接口(或ChannelInboundHandlerAdapter),你...原创 2020-04-03 22:26:58 · 658 阅读 · 0 评论 -
第 7 章 Google Protobuf
7.1 编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据7.2 Netty 本身的编码解码的机制和问题分析...原创 2020-04-03 20:38:27 · 120 阅读 · 0 评论 -
第 6 章 Netty 核心模块组件
6.1 Bootstrap、ServerBootstrap6.2 Future、ChannelFutureNetty 中所有的 IO 操作都是异步的,不能立刻得知消息是否被正确处理。但是可以过一会等它执行完成或者直接注册一个监听,具体的实现就是通过 Future 和 ChannelFuture,他们可以注册一个监听,当操作执行成功或失败时监听会自动触发注册的监听事件常见的方法有Cha...原创 2020-04-02 22:45:40 · 172 阅读 · 0 评论 -
第 5 章 Netty 高性能架构设计
5.1 线程模型基本介绍不同的线程模式,对程序的性能有很大影响,为了搞清 Netty 线程模式,了解下 各个线程模式,最后看看 Netty 线程模型有什么优越性.目前存在的线程模型有:传统阻塞 I/O 服务模型Reactor 模式根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现单 Reactor 单线程;单 Reactor 多线程;主从...原创 2020-03-28 21:47:10 · 175 阅读 · 0 评论 -
第 4 章 Netty 概述
4.1 原生 NIO 存在的问题NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。开发工作量和难...原创 2020-03-28 19:39:30 · 145 阅读 · 0 评论 -
第 3 章 Java NIO 编程
3.1 Java NIO 基本介绍Java NIO 全称 java non-blocking IO,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的NIO 相关类都被放在 java.nio 包及子包下,并且对原 java.io 包中的很多类进行改写。NIO 有三大核心部分:...原创 2020-03-28 01:39:14 · 148 阅读 · 0 评论 -
第 2 章 Java BIO 编程
I/O 模型I/O 模型基本说明I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能Java 共支持 3 种网络编程模型/IO 模式:BIO、NIO、AIOJava BIO : 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开...原创 2020-03-26 21:02:09 · 110 阅读 · 0 评论 -
第 1 章 Netty介绍和应用场景
1. Netty 的介绍Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。Netty 是一个 异步的、 基于事件驱动(连接,读,写等事件) 的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序Netty 主要针对在 TCP 协议下,面向 Clients 端的高并发应用,或者 Peer-to-Peer 场景下的大量数据持续...转载 2020-03-26 20:09:11 · 686 阅读 · 0 评论