Netty
文章平均质量分 74
fFee-ops
it's tough.
展开
-
Netty高级优化
Netty高级优化使用EventLoop的任务调度减少ChannelPipline的调用长度减少ChannelHandler的创建BOSS与Worker线程配置优化BOSS线程优化Worker(I/O)线程池优化线程隔离优化接收和发送缓冲区优化一些配置参数的设置使用EventLoop的任务调度在EventLoop的支持线程外使用channel.eventLoop().execute,而不是直接使用channel.writeAndFlush(data)。channel.eventLoop().execu原创 2021-10-31 23:01:22 · 869 阅读 · 0 评论 -
学习Netty时构建的demo
详情见github原创 2021-10-31 18:30:53 · 120 阅读 · 0 评论 -
深入剖析核心ByteBuf缓冲区
深入剖析核心ByteBuf缓冲区工作原理索引指针详解缓冲区的使用读取操作写入操作丢弃处理清理功能缓冲区使用模式ByteBuf 的分配ByteBuf的释放小结工作原理Java NIO 提供了ByteBuffer 作为它 的字节容器,但是这个类使用起来过于复杂,而且也有些繁琐。Netty 的 ByteBuffer 替代品是 ByteBuf。从结构上来说,ByteBuf 由一串字节数组构成。数组中每个字节用来存放信息。ByteBuf 提供了两个索引,一个用于读取数据,一个用于写入数据。这两个索引通过在字节数原创 2021-10-31 00:38:34 · 1016 阅读 · 0 评论 -
Google Protobuf
Google Protobuf编码和解码的基本介绍为什么要有 Google Protobuf?Protobuf使用步骤编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码为什么要有 Google Protobuf?因为netty自身虽然带有codec(编解码器),但是底层使用的仍是 Java 序列化技术 , 而 Java 序列化技术本身效率就不高,存在如下问题无法跨语言序列化后的体积太大,是二进制编码的 5 倍多。原创 2021-07-03 16:42:34 · 211 阅读 · 0 评论 -
Netty 核心模块组件
Netty 核心模块组件Bootstrap、ServerBootstrapFuture、ChannelFutureChannelSelectorChannelHandler 及其实现类Pipeline /ChannelPipelineChannelHandlerContextBootstrap、ServerBootstrapBootstrap是客户端的引导类,用于配置客户端的一些启动信息,而ServerBootstrap就是服务端的了Future、ChannelFutureNetty 中所有的 IO原创 2021-06-30 23:02:50 · 141 阅读 · 0 评论 -
Netty 高性能架构设计
Netty 高性能架构设计线程模型基本介绍传统阻塞 I/O 服务模型Reactor 模式(笼统概念版并未具体到三种实现)线程模型基本介绍目前存在的线程模型有:传统阻塞 I/O 服务模型Reactor 模式根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现单 Reactor 单线程;单 Reactor 多线程;主从 Reactor 多线程Netty 线程模式(Netty 主要基于主从 Reactor 多线程模型做了一定的改进,其中主从 Reactor 多线原创 2021-06-27 17:18:02 · 384 阅读 · 1 评论 -
Netty概述
Netty概述为什么会产生Netty?Netty的优点Netty 版本说明为什么会产生Netty?因为原生io存在巨多问题:NIO 的类库和 API 繁杂,使用麻烦。需要一些额外的技能,比如要熟悉Java多线程、网络编程开发难度大有一定的BUG,比如selector空轮询导致cpu100%负载Netty的优点设计优雅:适用于各种传输类型的统一 API 阻塞和非阻塞 Socket;基于灵活且可扩展的事件模型,可以清晰地分离关注点;高度可定制的线程模型 - 单线程,一个或多个线程池.使用原创 2021-06-27 16:38:10 · 153 阅读 · 0 评论 -
BIO、NIO、AIO
BIO、NIO、AIOBIO基本概念NIO基本概念AIO(目前并未广泛应用)关于三种IO的一些细节可以看看Linux的IO模型这篇文章,有些内容更加详细,这两篇文章加起来学习三种IO更好~BIO基本概念同步并阻塞(传统阻塞型),客户端的每一个请求服务端都要开一个线程来对应它,如果这个连接不做任何事情会造成不必要的线程开销。NIO基本概念同步非阻塞:服务器会开启一个线程,线程会维护一个Selector,一个Selector可以处理多个连接,它会在内部不断轮循,然后去处理那些有IO请求的连接(因原创 2021-06-22 23:56:49 · 257 阅读 · 1 评论