第一章:初识Netty:背景、现状与趋势 (7讲)

gzx0 2020-06-12

如何学netty?

关键点在于抓住主线:

请求处理最主要的流程是什么?

最核心的逻辑是什么?

在了解这些主线之前,不要迷恋细节,否则容易迷失在那些细枝末节的代码中。

如何学好一个技术?

1、了解这个技术的本质、背景、定位、过去和未来

2、这个技术的原理是什么

3、看文档,怎么用这个技术

4、别人是怎么的,有什么借鉴的地方

5、这个技术有什么需要改进的地方,为这个技术添砖加瓦

通过该课程学习,希望达到的目标

1、掌握java网络编程基本知识和原理

2、使用netty构建一个能推向产品线的java网络服务器

3、熟悉netty核心源码以及其深层原理

4、能够熟练诊断、分析并排查netty使用中的各种故障

netty相关书籍

网络知识:《TCP/IP详解》、《图解TCP/IP》、《Wireshark网络分析就这么简单》

Java 网络编程:《Java 网络编程》、《Java TCP/IP Socket编程》

Netty 相关:《Netty权威指南》《Netty实战》(译自《Netty in action》: Norman Maurer)《Netty进阶之路:跟着案例学Netty》

第一章:初识Netty:背景、现状与趋势 (7讲)

netty解决问题的方案

1、绕着走 epoll空转问题,做一个空检测

2、 搞不定就不支持,http_opt 设置在jdk中的异常,不支持

netty的优点;

解决了一些bug

性能更好

屏蔽了细节,更易用

老师,一般的netty服务端能支持多少长连接?

一个连接是由:客户端【IP + PORT】+ 服务器 【IP(固定的) + PORT(固定的)】 四个元素决定的

tcp层:客户端TCP层:最大64k,服务端:ip地址数量(约43亿)*64k
系统限制:最大文件句柄数:21亿

资源限制:linux系统下,一个socket连接一般占用3K,所以100万连接至少需要3G,而1000万就要30G了。

 理论值:单个客户端连接到一个服务器最多连接数取决于本地可用端口数(因为其他3个元素固定了): 65535(报文中端口占用字节数是16,所以最大端口数65535)- 1024(保留端口,不给用) 约 64K。

使用netty的项目:

spring5 的spring web flux

rocketmq

dubbo

spark 

hadoop

elasticsearch

zookeeper

相关推荐