
netty
ClawHub的技术分享
这个作者很懒,什么都没留下…
展开
-
深入了解Netty【八】TCP拆包、粘包和解决方案
1、TCP协议传输过程TCP协议是面向流的协议,是流式的,没有业务上的分段,只会根据当前套接字缓冲区的情况进行拆包或者粘包:发送端的字节流都会先传入缓冲区,再通过网络传入到接收端的缓冲区中,最终由接收端获取。2、TCP粘包和拆包概念因为TCP会根据缓冲区的实际情况进行包的划分,在业务上认为,有的包被拆分成多个包进行发送,也可能多个晓小的包封装成一个大的包发送,这就是TCP...原创 2019-12-02 21:05:02 · 301 阅读 · 0 评论 -
深入了解Netty【七】Netty核心组件
1、Bootstrap与ServerBootstrapbootstrap用于引导Netty的启动,Bootstrap是客户端的引导类,ServerBootstrap是服务端引导类。类继承关系:2、Future与ChannelFutureNetty中的操作都是异步的,等待完成或者注册监听。如://b为ServerBootstrap实例 ChannelFuture f = ...原创 2019-12-01 22:28:39 · 153 阅读 · 0 评论 -
深入了解Netty【六】Netty工作原理
引言前面学习了NIO与零拷贝、IO多路复用模型、Reactor主从模型。服务器基于IO模型管理连接,获取输入数据,又基于线程模型,处理请求。下面来学习Netty的具体应用。1、Netty线程模型Netty线程模型是建立在Reactor主从模式的基础上,主从 Rreactor 多线程模型:但是在Netty中,bossGroup相当于mainReactor,workerG...原创 2019-12-01 20:14:51 · 274 阅读 · 0 评论 -
深入了解Netty【五】线程模型
![]()引言不同的线程模型对程序的性能有很大的影响,Netty是建立在Reactor模型的基础上,要搞清Netty的线程模型,需要了解一目前常见线程模型的一些概念。具体是进程还是线程,是和平台或者编程语言相关,本文为了描述方便,以线程描述。目前存在的线程模型有:传统阻塞IO服务模型Reactor模型Proactor模型1、传统阻塞IO服务模型采用阻塞IO模...原创 2019-12-01 20:09:47 · 171 阅读 · 0 评论 -
深入了解Netty【四】IO模型
引言IO模型就是操作数据输入输出的方式,在Linux系统中有5大IO模型:阻塞式IO模型、非阻塞式IO模型、IO复用模型、信号驱动式IO模型、异步IO模型。因为学习Netty必不可少的要了解IO多路复用模型,本篇是基础。名词概念阻塞:指向调用方,在调用结果返回之前,调用方线程会挂起,直到结果返回。非阻塞:指向调用方,在调用结果返回之前,调用方线程会处理其他事情,不会阻塞。...原创 2019-12-01 20:01:11 · 172 阅读 · 0 评论 -
深入了解Netty【三】Netty概述
1、简介Netty是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty是一个NIO客户端服务器框架,它支持快速、简单地开发协议服务器和客户端等网络应用程序。它大大简化和简化了网络编程,如TCP和UDP套接字服务器。“快速而简单”并不意味着最终的应用程序将遭遇可维护性或性能问题。Netty经过精心设计,积累了许多协议(如FTP、SMTP、H...原创 2019-11-29 23:32:33 · 301 阅读 · 0 评论 -
深入了解Netty【二】零拷贝
引言以下翻译自:Zero Copy I: User-Mode Perspective零拷贝是什么?为了更好地理解问题的解决方案,我们首先需要理解问题本身。让我们来看看什么是参与网络服务器的简单过程dæmon服务数据存储在一个文件通过网络客户端。下面是一些示例代码:read(file, tmp_buf, len);write(socket, tmp_buf, len);...原创 2019-11-29 23:24:58 · 190 阅读 · 0 评论 -
深入了解Netty【一】BIO、NIO、AIO简单介绍
引言在Java中提供了三种IO模型:BIO、NIO、AIO,模型的选择决定了程序通信的性能。1.1、使用场景BIOBIO适用于连接数比较小的应用,这种IO模型对服务器资源要求比较高。NIOBIO适用于连接数目多、连接时间短的应用,比如聊天、弹幕、服务器间通讯等应用。AIOAIO适用于连接数目多、连接时间长的应用,比如相册服务器。1.2、BIO同步并阻塞模型,服务器...原创 2019-11-29 23:16:51 · 156 阅读 · 0 评论