netty系列

netty的direct memory大小设置 - gorden5566最近遇到一个 netty 的 OutOfDirectMemoryError 报错,是在分配 direct memory 时内存不足导致的,看了下报错提示,要分配的内存大小为 16M,剩余的空间不足。这里 max direct memory 大约有 7G,于是就有一个疑问,这个值是怎么设置的?https://gorden5566.com/post/1029.htmlnetty的EventLoop选择策略 - gorden5566netty 中的 channel 在完成创建和初始化之后,需要注册到 EventLoopGroup 上,这本质上是交给 EventLoop 管理 channel 的各种事件。一个 EventLoopGroup 管理了多个 EventLoop,那么在注册 channel 时,EventLoopGroup 就需要选择一个 EventLoop,然后将其和 channel 关联起来。选择 EventLoohttps://gorden5566.com/post/1063.htmlServerSocketChannel是如何初始化和绑定到EventLoop的? - gorden5566ServerBootstrap 启动时需要初始化 ServerSocketChannel 并将其绑定到 EventLoop 上,用于处理该 channel 上产生的各种事件。那么 ServerSocketChannel 是如何完成创建和初始化的?又是如何绑定到 EventLoop 上的?https://gorden5566.com/post/1065.htmlnetty中ChannelFuture.sync()的作用是什么? - gorden5566如果你使用过 netty,你一定见过下面两行代码,它们可以说是创建一个 netty server 的标配代码12ChannelFuture future = bootstrap.bind(port).sync();future.channel().closeFuture().sync();不知道你有没想过这里面的 sync() 的作用是什么,如果去掉会有什么问题?https://gorden5566.com/post/1066.html解决mac下transport-native-unix-common编译失败问题 - gorden5566Mac 下编译 netty 报错,提示 Netty/Transport/Native/Unix/Common 模块编译失败,到网上搜索一下,并未发现有人遇到过类似问题,因此做下记录。https://gorden5566.com/post/1067.htmlnetty的Promise源码分析 - gorden5566netty 使用 DefaultPromise 完成异步操作,它对 jdk 的 Future 进行了扩展,提供了更丰富的功能。https://gorden5566.com/post/1068.htmlnetty的启动流程分析 - gorden5566netty 是一个基于异步事件驱动实现的网络编程框架,它的内部使用了大量的异步编程方法,这是它性能高效的一个原因,但同时也使得代码阅读起来更加困难,本文就尝试分析下它的启动过程https://gorden5566.com/post/1069.htmlnetty的ChannelPipeline是如何工作的? - gorden5566netty 中每个 channel 都会绑定了一个 pipeline,当有入站事件或出站操作时,会由 pipeline 中的 handler 进行拦截处理。https://gorden5566.com/post/1070.html事件在pipeline中传播时如何跳过非必须的handler? - gorden5566Netty 中通过在 pipeline 上添加各种 handler 组合来实现不同的逻辑,handler 又可以分为 ChannelInboundHandler 和 ChannelOutboundHandler,它们分别用于处理入站事件和出站事件。https://gorden5566.com/post/1071.htmlbootstrap.connect的调用链路 - gorden5566对于一个 Netty client 来说,在配置好 Bootstrap 之后,通过调用其 connect 方法来连接到远程服务端,如下所示1234Bootstrap b = new Bootstrap();b.group(group) ...ChannelFuture f = b.connect(HOST, PORT).sync();https://gorden5566.com/post/1072.htmlReactor线程模型的对比 - gorden5566在高性能网络通信框架中,I/O 模型和线程模型是两个核心的关注点。对于 I/O 多路复用模型,需要将 selector 上的事件分发给对应的事件处理者。在 Reactor 线程模型中,Reactor 作为事件分发器,负责分发各种 I/O 事件。https://gorden5566.com/post/1076.htmlnetty server启动时触发的事件与相关代码分析 - gorden5566Netty server 在启动过程中会触发一系列的 Inbound 事件,它的流程是怎样的呢?https://gorden5566.com/post/1077.html使用Unpooled创建ByteBuf - gorden5566Unpooled 是 netty 提供的一个工具类,通过它可以方便地创建各种类型的 ByteBuf。需要注意的是,通过 Unpooled 创建的是非池化的 ByteBuf,在注重性能的场景需要使用各种 PooledByteBuf。接下来我们就来看下 Unpooled 类是如何使用的。https://gorden5566.com/post/1078.html如何理解netty的内存管理-PoolArena - gorden5566最近花时间研究了下 Netty 的内存管理实现,感觉挺有意思的,但也明显地感觉到,这部分功能要比其他功能模块更难理解。在这个过程中,我一直在想,如果能有这么一张图,能够说明内存管理的模块组成、各个模块之间的关系以及其实现原理,那么我就可以以更短的时间读懂相关源码了。因此,我将自己的一些理解画成了图。如果你也对这块内容感兴趣,兴许这篇文章能有所帮助。https://gorden5566.com/post/1079.html如何理解netty的内存管理-PoolThreadCache - gorden5566当多个线程使用同时同一个 PoolArena 分配内存时,因为存在竞争关系,所以会导致内存分配性能下降。为了减少冲突,PooledByteBufAllocator 会提供多个 PoolArena,并通过 PoolThreadCache 分配给每个 FastThread 线程,同一个线程多次分配释放的过程中,还会使用到缓存,以降低多次内存分配的压力。https://gorden5566.com/post/1080.htmlnetty入门之EchoServer - gorden5566学习一门新的语言,通常是以 HelloWorld 开始的。类似地,学习一个网络框架,通常是以 EchoServer 开始的。接下来我们就来看下如何通过 netty 实现一个 EchoServer。https://gorden5566.com/post/1082.htmlChannelOption.SO_BACKLOG的作用 - gorden5566在使用 netty 开发网络应用时,通常会设置 ChannelOption.SO_BACKLOG,不知你有没想过这个参数的作用是什么。https://gorden5566.com/post/1084.html长连接网关如何与后端服务通信 - gorden5566在长连接网关中,网关与后端服务的通信方式需要考虑长连接的特点,因此与短连接网关有所不同。https://gorden5566.com/post/1087.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值