netty框架教学,netty框架工作原理

首页 > 实用技巧 > 作者:YD1662024-02-21 13:48:53

epoll_wait 工作流程概述

对照代码:linux-2.6.11.12/fs/eventpoll.c:

1)epoll_wait 调用 ep_poll

2)文件描述符 fd 的 events 状态改变

3)ep_poll_callback 被触发

4)执行 ep_events_transfer 函数

5)执行 ep_send_events 函数

8 Netty 的最佳实践

1)业务线程池必要性

2)WriteBufferWaterMark

3)重写 MessageSizeEstimator 来反应真实的高低水位线

4)注意EventLoop#ioRatio的设置(默认50)

5)空闲链路检测用谁调度?

6)使用ctx.writeAndFlush还是channel.writeAndFlush?

7)使用Bytebuf.forEachByte() 来代替循环 ByteBuf.readByte()的遍历操作,避免rangeCheck()

8)使用CompositeByteBuf来避免不必要的内存拷贝

9)如果要读一个int,用Bytebuf.readInt(),不要Bytebuf.readBytes(buf,0,4)

10)配置UnpooledUnsafeNoCleanerDirectByteBuf来代替jdk的DirectByteBuf,让netty框架基于引用计数来释放堆外内存

io.netty.maxDirectMemory:

0:不使用cleaner,并且这个参数将直接限制netty的最大direct memory size,(jdk的direct memory size是独立的,不受此参数限制)。

11)最佳连接数

12)使用PooledBytebuf时要善于利用 -Dio.netty.leakDetection.level 参数

13)Channel.attr(),将自己的对象attach到channel上

9 从 Netty 源码中学到的代码技巧

1)海量对象场景中 AtomicIntegerFieldUpdater --> AtomicInteger

2)FastThreadLocal,相比jdk的实现更快

3)IntObjectHashMap / LongObjectHashMap …

4)RecyclableArrayList

5)JCTools

作者 | 家纯

本文为阿里云原创内容,未经允许不得转载。

上一页23456末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.