随笔分类 - netty学习之路
初学netty网络编程
摘要:1.Protobuf基本介绍和使用示意图 Protobuf 是 Google 发布的开源项目,全称 Google Protocol Buffers,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC[远程过程调用 remote procedure
阅读全文
摘要:1.基本介绍 当Netty发送或者接受一个消息的时候,就将会发生一次数据转换。入站消息会被解码:从字节转换为另一种格式(比如java对象);如果是出站消息,它会被编码成字节。 Netty提供一系列实用的编解码器,他们都实现了ChannelInboundHadnler或者ChannelOutbound
阅读全文
摘要:1.RPC基本介绍 RPC(Remote Procedure Call)— 远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程 2.PRC调用流程说明 服务消费方(client)以本地调用方式调用服务 client st
阅读全文
摘要:1.基本介绍 1. TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了
阅读全文
摘要:主要是用于服务端检测,客户端不显示 1. 服务端 import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer;
阅读全文
摘要:1.服务器端 import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.so
阅读全文
摘要:1.Bootstrap、ServerBootstrap 1.1 解释 一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类;
阅读全文
摘要:1.服务端 public class MyServer { public static void main(String[] args) throws Exception { //创建两个线程组 bossGroup 和 workerGroup,bossGroup 处理连接请求 , // bossGr
阅读全文
摘要:1.异步基本介绍 1. 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的组件在完成后,通过状态、通知和回调来通知调用者。 2. Netty 中的 I/O 操作是异步的,包括 Bind、Write、Connect 等操作会简单的返回一个 ChannelFutu
阅读全文
摘要:1.工作原理示意图: 说明: 1. Netty抽象出两组线程池 BossGroup 专门负责接收客户端的连接, WorkerGroup 专门负责网络的读写 2. BossGroup 和 WorkerGroup 类型都是 NioEventLoopGroup 3. NioEventLoopGroup 相
阅读全文
摘要:1. Reactor 模式分类 a. 单 Reactor 单线程; b. 单 Reactor 多线程; c. 主从 Reactor 多线程; 1.1. Reactor 模式具有如下的优点: 1. 响应快,不必为单个同步时间所阻塞,虽然 Reactor 本身依然是同步的 2. 可以最大程度的避免复杂的
阅读全文
摘要:1.线程模型种类 1.1. 传统阻塞 I/O 服务模型 1.2. Reactor 模式 2.传统阻塞 I/O 服务模型 2.1. 工作原理图 2.2 模型特点 2.2.1. 采用阻塞IO模式获取输入的数据 2.2.2. 每个连接都需要独立的线程完成数据的输入,业务处理,数据返回 2.3. 问题分析
阅读全文
摘要:1.什么是零拷贝 一种避免 CPU 将数据从一块存储拷贝到另外一块存储的技术。针对操作系统中的设备驱动程序、文件系统以及网络协议堆栈而出现的各种零拷贝技术极大地提升了特定应用程序的性能,并且使得这些应用程序可以更加有效地利用系统资源。这种性能的提升就是通过在数据拷贝进行的同时,允许 CPU 执行其他
阅读全文
摘要:1.服务端 public class GroupChatServer { private Selector selector; private ServerSocketChannel listenChannel; private static final int PORT = 6677; //初始化
阅读全文
摘要:1.简单介绍 选择器提供选择执行已经就绪的任务的能力.从底层来看,Selector提供了询问通道是否已经准备好执行每个I/O操作的能力。Selector 允许单线程处理多个Channel。仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事实上,可以只用一个线程处理所有的通
阅读全文
摘要:1.基本介绍 Java NIO中的 ServerSocketChannel 是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。ServerSocketChannel类在 java.nio.channels包中。 2.ServerSocketChannel 的创建
阅读全文
摘要:1.简单介绍 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。 2.模型图 3.Buffer缓冲区 a.Buffer在Java NIO的作用 在Java NIO中,缓冲区的作用也是用来临时存储数据,
阅读全文
摘要:1.什么是netty? Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty封装了JDK的NIO. 2.Netty和Tomcat区别? Netty和Tomcat最大的区别就在于通信协议,Tomcat是基于Http协议的,
阅读全文

浙公网安备 33010602011771号