Netty 源码剖析与实战
傅健
Netty 源码贡献者、Cisco 高级软件工程师
32935 人已学习
新⼈⾸单¥59
课程目录
已完结/共 60 讲
第一章:初识Netty:背景、现状与趋势 (7讲)
第三章:Netty源码:从“线”(请求处理)的角度剖析 (8讲)
第六章:成长为Netty的贡献者 (6讲)
Netty 源码剖析与实战
登录|注册
留言
10
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 05 | 为什么孤注一掷:独选Netty?
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | 揭开Netty面纱
04 | 为什么舍近求远:不直接用JDK NIO?
05 | 为什么孤注一掷:独选Netty?
06 | Netty的前尘往事
07 | Netty的现状与趋势
08 | Netty怎么切换三种I/O模式?
09 | 源码剖析:Netty对I/O模式的支持
10 | Netty如何支持三种Reactor?
11 | 源码剖析:Netty对Reactor的支持
12 | TCP粘包/半包Netty全搞定
13 | 源码剖析:Netty对处理粘包/半包的支持
14 | 常用的“二次”编解码方式
15 | 源码剖析:Netty对常用编解码的支持
16 | keepalive与idle监测
17 | 源码剖析:Netty对keepalive与idle监测的支持
18 | Netty的那些“锁”事
19 | Netty如何玩转内存使用
20 | 源码解析:Netty对堆外内存和内存池的支持
21 | Netty代码编译与总览
22 | 源码剖析:启动服务
23 | 源码剖析:构建连接
24 | 源码剖析:接收数据
25 | 源码剖析:业务处理
26 | 源码剖析:发送数据
27 | 源码剖析:断开连接
28 | 源码剖析:关闭服务
29 | 编写网络应用程序的基本步骤
30 | 案例介绍和数据结构设计
31 | 实现服务器端编解码
32 | 实现一个服务器端
33 | 实现客户端编解码
34 | 完成一个客户端雏形
35 | 引入"响应分发"完善客户端
36 | Netty编码中易错点解析
37 | 调优参数:调整System参数夯实基础
38 | 调优参数:权衡Netty核心参数
39 | 调优参数:图解费脑的三个参数
40 | 跟踪诊断:如何让应用易诊断?
41 | 跟踪诊断:应用能可视,心里才有底
42 | 跟踪诊断:让应用内存不“泄露”?
43 | 优化使用:用好自带注解省点心
44 | 优化使用:“整改”线程模型让"响应"健步如飞
45 | 优化使用:增强写,延迟与吞吐量的抉择
46 | 优化使用:如何让应用丝般“平滑”?
47 | 优化使用:为不同平台开启native
48 | 安全增强:设置“高低水位线”等保护好自己
49 | 安全增强:启用空闲监测
50 | 安全增强:简单有效的黑白名单
51 | 安全增强:少不了的自定义授权
52 | 安全增强:拿来即用的SSL-对话呈现表象
53 | 安全增强:拿来即用的SSL-抓包暴露本质
54 | 安全增强:拿来即用的SSL-轻松融入案例
55 | Cassandra如何使用Netty ?
56 | Dubbo如何使用Netty ?
57 | Hadoop如何使用Netty ?
58 | 赏析Netty之美
59 | 如何给Netty贡献代码?
60 | 结课测试&结束语
本节摘要
登录 后留言

全部留言(10)

  • 最新
  • 精选
Zer01ne
老师,一般的netty服务端能支持多少长连接?

作者回复: 不好意思回复迟了,最近一直忙录课,没来得及好好给您回复,我把你这个问题单独记录下来,以后做个netty 100问什么的到时候再集中发您,这里我先把我的理解总结下贴给您: 这个问题其实不是 Netty 专属问题,类似问题:一个服务器或者客户端能创建多少连接,以 linux 为例: 一个连接是由:客户端【IP + PORT】+ 服务器 【IP(固定的) + PORT(固定的)】 四个元素决定的,所以支持多少,要从两个角度分析: (1)对于单个客户端(IP地址固定)而言: 理论值:单个客户端连接到一个服务器最多连接数取决于本地可用端口数(因为其他3个元素固定了): 65535(报文中端口占用字节数是16,所以最大端口数65535)- 1024(保留端口,不给用) 约 64K。 实际值:取决于以下三个方面: 1)TCP层:ip_local_port_range (参考/proc/sys/net/ipv4/ip_local_port_range),可调整,最大65535-1024 2)系统限制:最大文件句柄数(参考/etc/security/limits.conf),可调整,最大21亿 3)资源限制:内存等资源有限,例如连接本身占用资源,Netty本身的socket相关的对象也占用jvm,需要根据机器做测试。 (2)对于服务器而言: 理论值: 最大连接数 = 客户端数量(IP地址数量) * 单个客户端的最多连接数(约64K),不考虑资源限制,最多21亿,实际以资源限制为准, 100万连接就要占用3G以上了。 实际值: 受限于三个方面: 1)TCP层: IPv4使用32位(4字节)地址,因此地址空间中只有4,294,967,296(约43亿),所以乘以单个客户端最大64K, 数量惊人。 1)系统限制:同上,最大21亿 2)资源限制:同上 总结: (1)对于客户端,6万多点,对于服务器,100万到1000万,再多,内存就要30G以上了,所以网上经常说百万连接。当然,如果你机器内存1G不到的话,那也搞不了了。 (2)单纯看连接多少意义不是很大,因为连接是为了做事情,光能连上很多,但是占用资源过大导致基本已经不能动弹的话,意义就不大了,不过这个问题本身有趣。 扩展: (1)查看ip_local_port_range方法: [root@netty ~]# cat /proc/sys/net/ipv4/ip_local_port_range 16384 61000 (2)服务器支持1200万连接的案例: https://mrotaru.wordpress.com/2013/06/20/12-million-concurrent-connections-with-migratorydata-websocket-server/ (3) 最大文件句柄数的最大值受另外一个参数控制: [root@netty ~]# cat /proc/sys/fs/nr_open 1048576 设置超过的话: [root@netty ~]# ulimit -Hn 9000000 - bash: ulimit: open files: cannot modify limit: Operation not permitted 所以如果想改的更大,这需要修改这个参数(默认百万:1048576(1024 * 1024)): sysctl -w fs.nr_open=100000000 那这参数最大值,可以到多少呢?2147483584 (即7FFFFFC0,也就是在MAXINT(2147483647)基础上按64字节对齐) (4)linux系统下,一个socket连接一般占用3K,所以100万连接至少需要3G,而1000万就要30G了,所以可以看下(2)引用连接文章里的内存大小,很大。 格式有点乱,先将就看看,等课程结束,我排版好,做个小册子发你们。

2019-11-06
6
75
吃饭饭
Tomcat 和 Jetty 是 web 容器,虽然 netty 也能实现,但是并不完善;Netty 的主要应用是针对传输层的,我感觉 这里拿Tomcat 和 Jetty 比较 Netty 并不合适吧

作者回复: 严格来说,确实不是一个层次的东西,侧重点也不同,但是看很多人经常把这二个混淆,而且确实,表面看他们也经常呈现出类似的效果,比如netty + http codec 约等于 tomcat+servlet实现web服务器, 考虑到这点,所以内容编排上放一起做了一个区分和比较; netty核心确实主要是提供传输层的支撑,但是它也提供了很多应用层协议的编解码支持。

2019-10-14
5
helloworld
只听说过Mina,Tomcat,Jetty和Netty,Java领域高性能网络通讯框架看来非Netty不可了

作者回复: 真的是这样,选择要“跟风”且果断

2019-10-10
5
小陈
不错不错,原来还有这么多网络通信框架,老师,像华为这种大公司用什么网络通信框架呢?

作者回复: 说实话,不知道,但是其实不用看的,肯定netty居多,我不信有人会自己实现一套,如果有,也是历史产品。

2020-03-20
3
fomy
Netty是基于Socket抽象层(传输层)通信的,而Tomcat是基于HTTP协议(应用层)通信的,它们是不是不可以类比呢?

作者回复: 是不同层次的东西,但是经常搞混淆,所以我就把这个放进来了比较了下,有点类似雷锋和雷峰塔的比较了(不过有点夸张了,虽然不同层次,但是能实现类似的东西,所以才放一起做了比较。)

2019-11-04
2
Allan
https://stackoverflow.com/questions/1637752/netty-vs-apache-mina trustin
2021-06-11
jhren
请问老师,Netty跟Apache HttpComponents是一个层面的框架吗?能比较一下吗?
2020-05-30
厉害了我的国
幽默
2020-04-21
喵喵喵
打卡~
2020-03-06
大牙
“关键问题是 Netty就从类没有输过”。老师一本正经的幽默还真的很幽默
2019-11-01
收起评论