首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java-彻底弄懂netty-程序员必须了解的Reactor模式-知识铺

知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。

一、请求模式

目前 web请求,两种模式: 基于线程模式和基于事件驱动模式

1.1 线程模式

每个请求对应独立线程来处理,比较符合自然思考逻辑。

局限性:占用内存资源、线程间切换开销过大、用户量上来后比较消耗web服务器性能。

解决方案:水平扩展,无状态,分布式,微服务 分散I/O操作。

1.2 事件驱动模式

理念: 请求连接 与 事件处理分离。

二、Reactor模式

Reactor模式是事件驱动模式的一种实现

2.1 单线程Reactor模型

Java Nio 编程中 Selectr 网络连接中,就是一个简单Reactor模式单线程实现。

如:前文提到的例子

2.2 多线程的Reactor

基于线程池处理,让接受到的socket连接请求,可以分发到线程中执行。

2.3 epoll 高效模式

epoll管理模式可以保持大量客户端, 避免轮询每个请求,获取每个请求状态。

epoll_create 创建fd

epoll_ctl fd添加到监听红黑树中

epoll_wait 就绪列表

监听红黑树中有出现有效请求,就让该socket置位就绪状态。

while(true) 只遍历就绪状态的socket即可,提高性能,不需要遍历所有fd,效率高。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190818A0IUOM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券