Netty
文章平均质量分 86
Netty框架学习,Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
IT小学僧
一定要坚持学习啊
展开
-
九、TCP粘包和拆包及解决方案
9.1、TCP粘包和拆包基本介绍TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的Socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辩出完整的数据包了,因为面向流的通信是无消息保护边界的。由于TCP无消息保护边界,需要在接收端处理消息边界问题,也就是我们所说的粘包、拆包问题、TCP粘包、拆原创 2022-01-26 16:35:50 · 1913 阅读 · 0 评论 -
八、Netty编解码器和handler的调用机制
8.1、基本说明Netty的组件设计:Netty的主要组件有Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipe等ChannelHandler充当了处理入站和出站数据的应用程序逻辑的容器。例如,实现ChannelInboundHandler接口(或ChannelInboundHandlerAdapter),你就可以接收入站事件和数据,这些业务逻辑处理。当要给客户端发送响应时,也可以从ChannelInboundHandler冲刷数据原创 2022-01-26 16:33:16 · 193 阅读 · 0 评论 -
七、Google Protobuf
7.1、编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码codec(编解码器)的组成部分有两个:decoder(解码器)和encoder(编码器)。encoder负责把业务数据转换成字节码数据,decoder负责把字节码数据转换成业务数据7.2、Netty本身编码解码的机制和问题分析Netty自身提供了一些codec(编解码器)Netty提供的编码器StringEncoder,对字符串数据进行编码原创 2022-01-26 16:30:59 · 248 阅读 · 0 评论 -
六、Netty核心模块组件
6.1、Bootstrap、ServerBootstrapBootstrap 意思是引导,一个Netty应用通常由一个Bootstrap开始,主要作用是配置整个Netty程序,串联各个组件,Netty中Bootstrap类是客户端程序的启动引导类,ServerBootstrap是服务器启动引导类常见的方法有public ServerBootstrap group(EventLoopGroup parentGroup,EventLoopGroup childGroup),该方法用于服务端,用来设置两原创 2022-01-26 16:28:42 · 117 阅读 · 0 评论 -
五、Netty高性能结构设计
5.1、线程模型基本介绍不同的线程模型,对程序的性能有很大影响。目前存在的线程模型有:传统阻塞IO服务模型Reactor模式根据Reactor的数量和处理资源池线程的数量不同,有3种典型的实现单Reactor单线程单Reactor多线程Netty线程模式(Netty注意基于主从Rectory多线程模型做了一定的改进,其中主从Reactor多线程模型有多个Reactor);5.2、传统阻塞I/O服务模型5.2.1、工作原理图PS:黄色的框表示对象,蓝色的框表原创 2022-01-26 16:25:18 · 109 阅读 · 0 评论 -
四、Netty概述
4.1、NIO存在的问题NIO的类库和API繁杂,使用麻烦:需要掌握Selector、ServerSocketChannel、SocketChannel、ByteBuffer等。需要具备其他的额外技能:需熟悉java多线程编程,因为NIO编程涉及到Reactor模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的NIO程序。开发工作量和难度都非常大;例如客户端面临断连重连,网络闪断,半包读写,失败缓存、网络拥塞和异常流的处理等等JDK NIO的Bug: 例如臭名昭著的Epoll Bug,它会原创 2022-01-26 16:19:26 · 160 阅读 · 0 评论 -
三、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有三大核心部分:Channel(通道),Buffer(缓存区),Selector(选择器)NIO是面向缓冲区,或者面向块编程的,数据读取到一个它稍后处理原创 2022-01-26 16:17:16 · 990 阅读 · 0 评论 -
二、java BIO 编程
2.1、I/O模型I/O模型简单的理解;就是用什么的通道进行数据的发送和接收,很大程度上决定了程序通信的性能Java共支持3种网络编程模型I/O模式:BIO,NIO,AIOJava BIO :同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进程处理,如果这个连接不做任何事情会造成不必要的线程开销 Java NIO同步非阻塞,服务器实现模式为一个线程处理多个请求(连接),即客户端发送的连接请求都会注册到多路复用器上,多路复用原创 2022-01-26 16:09:08 · 175 阅读 · 0 评论 -
一、Netty的概念与体系结构
1、Netty介绍1.1、简介Netty是由JBOSS提供的一个java开源框架,现为Github上的独立项目Netty是一个异步的,基于事件驱动的网络应用框架,用以快速开发性能、高可靠性的网络IO程序。Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者Peer-to-Peer场景下的大量数据持续传输的应用。Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景1.2、特点设计统一的API,支持多种传输类型,阻塞和非阻塞的简单而强大的线程模型真正的无连原创 2022-01-26 16:05:21 · 155 阅读 · 0 评论