
netty
从nio到netty
心灵彼岸-诗和远方
对一个程序员来说数据结构与算法是内功,各种技术就是招式,只有并驾齐驱方可到达巅峰!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RPC实现原理
一、概述 RPC(Remote Procedure Call)— 远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。 二、解决的问题 两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样,如下图。 三、常见的 RPC 框架有 阿里的Dubbo、google的gRPC、Go语言...原创 2020-04-26 22:08:15 · 341 阅读 · 0 评论 -
TCP 粘包和拆包
一、概述 TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的;由于TCP无...原创 2020-04-19 20:57:20 · 245 阅读 · 0 评论 -
Netty-编码与解码
一、概述 编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码;codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据。 二、原理示意图 三、Netty 本身的编码解码的机制和问题分析 N...原创 2020-04-19 20:36:11 · 771 阅读 · 0 评论 -
Netty-核心模块API
一、Bootstrap、ServerBootstrap Bootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类 常见的方法有 public ServerBootstrap group(Eve...原创 2020-04-19 19:59:39 · 297 阅读 · 0 评论 -
Netty-异步模型
一、概述 异步的概念和同步相对,当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的组件在完成后,通过状态、通知和回调来通知调用者;Netty 中的 I/O 操作是异步的,包括 Bind、Write、Connect 等操作会简单的返回一个ChannelFuture;Netty 的异步模型是建立在 future 和 callback 的之上的,callback 就是回...原创 2020-04-19 18:45:54 · 495 阅读 · 0 评论 -
Netty模型
一、工作原理示意图 二、执行流程说明 Netty抽象出两组线程池 BossGroup 专门负责接收客户端的连接, WorkerGroup 专门负责网络的读写; BossGroup 和 WorkerGroup 类型都是 NioEventLoopGroup; NioEventLoopGroup 相当于一个事件循环组, 这个组中含有多个事件循环 ,每一个事件循环是 NioEventLo...原创 2020-04-12 22:49:23 · 1862 阅读 · 0 评论 -
Netty概述
一、概述 Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。 Netty 是由 JBOSS 提供的一个 Java 开源框架; Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序; Netty 可以帮助你快速、简单的开发出一个网络应用,相当于简化和流程化了 NIO 的开发过程 Netty...原创 2020-04-12 16:39:37 · 181 阅读 · 0 评论 -
NMAP与sendFile--网络编程中IQ性能优化利器
一、概述: 本文通过传统IO、nmap、sendFile三种方法数据读写的原理分析说明nmap、sendFile的优势。 二、传统IO数据读写 工作原理图: 方案说明: 传统IO使用3次状态切换,4次copy(其中两次DMA COPY,两次CPU COPY); DMA: direct memory access 直接内存拷贝(不使用CPU). ...原创 2020-04-11 13:20:18 · 352 阅读 · 0 评论 -
netty之reactor模式
一、概述: 不同的线程模式,对程序的性能有很大影响,为了搞清Netty 线程模式,我们来系统的讲解下 各个线程模式,目前存在的线程模型有: 传统阻塞 I/O 服务模型 及Reactor 模式两大类;其中根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现 1单 Reactor 单线程; 2单 Reactor 多线程; 3主从 Reactor 多线程。 二、...原创 2020-04-07 23:43:03 · 807 阅读 · 0 评论 -
JAVA-NIO
一、概述: java-nio全称(java non-blocking IO),是指java 1.4提供新的API,从jdk1.4开始,java提供了一系列改进的输入/输出新特性,被称为NIO(new IO)是同步非阻塞的。 二、NIO的三大核心组件原理(selector、channel、buffer) 1、每个channel对于一个buffer; 2、Selector对...原创 2020-04-06 18:49:14 · 188 阅读 · 0 评论 -
JAVA-BIO
一、概述:JAVA-BIO 就是传统的java io 编程,也称为(blocking i/o):同步阻塞,服务器实现模式为一个连接一个线程,即客户端有请求时服务端就得启动个线程进行处理,如果连接不做任何事造成不必要的线程开销,可以通过线程池机制改善(但是一对一的连接没办法改善)。 二、JAVA -BIO工作机制示意图 三、JAVA-BIO 的适用场景 连接数据比较小...原创 2020-04-06 11:31:58 · 140 阅读 · 0 评论