下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 10 | Netty如何支持三种Reactor?
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

Netty源码剖析与实战

共60讲 · 约670分钟
4423
免费
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 揭开Netty面纱
免费
04 | 为什么舍近求远:不直接用...
免费
05 | 为什么孤注一掷:独选Nett...
06 | Netty的前尘往事
07 | Netty的现状与趋势
08 | Netty怎么切换三种I/O模...
09 | 源码剖析:Netty对I/O模...
10 | Netty如何支持三种Reacto...
11 | 源码剖析:Netty对Reacto...
12 | TCP粘包/半包Netty全搞...
13 | 源码剖析:Netty对处理粘...
14 | 常用的“二次”编解码方式
15 | 源码剖析:Netty对常用编...
16 | keepalive与idle监测
17 | 源码剖析:Netty对keepal...
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 | 优化使用:为不同平台开启...
48 | 安全增强:设置“高低水位...
49 | 安全增强:启用空闲监测
50 | 安全增强:简单有效的黑白...
51 | 安全增强:少不了的自定义...
52 | 安全增强:拿来即用的SSL...
53 | 安全增强:拿来即用的SSL...
54 | 安全增强:拿来即用的SSL...
55 | Cassandra如何使用Netty...
56 | Dubbo如何使用Netty ?
57 | Hadoop如何使用Netty ?
58 | 赏析Netty之美
59 | 如何给Netty贡献代码?
60 | 课程回顾与总结
本节摘要

精选留言(12)

  • 2019-10-18
    老师能讲讲linux select poll epoll 原理吗?

    作者回复: 这个当时课程设计的时候,稍微底层点的东西我都过滤了,因为怕跑题太远,这个问题我记录下来了,回头我做问题汇总小册子的时候,把这个问题总结出来发您。

    5
  • 2019-10-14
    生活的例子紧贴 Reactor 模式,太完美了,为老师点赞。另外建议看一下 Dog Lea 的 Reactor 文章会加深理解:)

    作者回复: 谢谢肯定,我会努力的

    1
    2
  • 2019-11-28
    请问老师个问题,从单纯性能角度来讲 单独独立接受连接的reactor性能是如何得到提升的。

    作者回复: 关键点不是性能提升问题,因为做事情的人的总数没变,只是从无分工变成了有分工,假设不独立出单独接受连接的话,等于所有的事都是一样优先级的,那在繁忙的时候,接受连接的处理可能就会延迟很久,导致连接超时,很明显连接比一次业务处理更重要,所以才把最重要的事独立处理,所以举例说大饭店都是有迎宾的。另外,反过来说,目标不是性能提升,因为分工了。只是说问题少了。

    1
  • 2019-11-08
    netty非主从多线程模式的写法是不是错了?应该也分bossGroup和workerGroup吧,只不过bossGroup的线程数设为1.
    EventLoopGroup bossGroup = new NioEventLoopGroup(1);
    EventLoopGroup workerGroup = new NioEventLoopGroup();
    ServerBootstrap b = new ServerBootstrap();
    b.group(bossGroup, workerGroup)

    作者回复: 那个参数是1还是多少是控制是否多线程,而是否分2组是区别是否采用主从,你这样的话,还是主从,只不过是主是单线程,从是多线程。非主从只有一个group。

    1
  • 2019-11-26
    一开始说的找两个漂亮的前台招揽顾客,就是最后的bosseventloop?

    作者回复: 是的

  • 2019-11-26
    Thread-Per-Connection模式
    一个线程处理一件事情

    单线程就eventLoopGroup(1) 后面加个1
    reactor的主从多线程模式,搞几个迎宾来处理接入的连接
    netty的eventLoopGroup 如果不设置线程数据,就会根据cpu去设置最优的线程数


    主从
    两种socktChannel绑定到两个group里面去
    展开

    作者回复: netty还是很全面的,除用cpu计算默认的线程数,还有其他两个参数,分别考虑了docker等因素,后面会提到。

  • 2019-11-21
    老师您好。非主从模式下的bossGroup的线程数是否和端口数量有关,如果服务端只开放一个端口供客户端链接,那么bossGroup设置为多线程是否多余?

    作者回复: 是多余的,你理解的非常到位,确实可以这么简单对应起来,就是按端口来对应,就因为多余,所以可以直接上来就显式设置为1,不过多余坏处不大,因为其他的不启动多余的线程。

  • 2019-10-22
    课程内容挺紧凑的,感谢大牛。

    作者回复: 多谢捧场!

  • 2019-10-19
    关于图表中用netty实现非主从Reactor模式和主从Reactor模式,存在一点疑问。非主从模式:创建NioEventLoopGroup虽然没有传递参数,但是现在计算机都是多核,所以NioEventLoopGroup内部仍然会创建多个NioEventLoop,也就是说处理连接请求和读写请求是由同一个NioEventLoopGroup里不同NioEventLoop处理。主从Reactor模式:由BossGroup里的NioEventLoop处理连接请求。WorkerGroup里的NioEventloop处理读写请求。都是 连接请求和读写请求有不同的NioEventloop来处理,那么两者有什么区别呢?

    作者回复: 前面您都说的挺好的,后面为什么会有疑问呢?感觉你自我解释了,做的事情不同,有分工了,连接请求专门的nio event loop处理,数据读写又有不同的nio event loop处理,否则假设放一起,一个或者大多数据特别大,导致错过或者说很久没有接受连接怎么办?核心还是分工思想

  • 2019-10-16
    没有实战过netty,问一个问题,既能主从Reactor模式,什么场景下主建立多个线程处理外面来的事件

    作者回复: 不是太看懂您的表达,反正上来用主从就对了。

  • 2019-10-13
    大神好,请教个问题。
    针对NIO使用reactor开发模式:注册事件、扫描事件、处理事件。
    如果是AIO话,其中的扫描事件,是不是就不用自己扫描了,而是只要注册事件然后被动的等待通知就行了?

    作者回复: NIO也不需要“自己”去扫描事件啊,AIO的优点在于,不需要自己去读数据了,NIO还要自己去读,但是这两个都是事件驱动的,在linux下实现也都是epoll。

  • 2019-10-11
    Reactor缘起Doug Lea的Scalable IO in Java,Netty更漂亮的实现了~,不知道Proactor又是哪位大爷的论文提出的