电子技术支持 东莞网站建设专业的企业智能建站价格便宜
web/
2025/9/26 18:40:04/
文章来源:
电子技术支持 东莞网站建设,专业的企业智能建站价格便宜,如何给别人做网站挣钱,泉州服装网站建设目录
传统下网络服务模型
事件监听模型 NIO核心概念
单线程Reactor模式
多线程Reactor模式
Kafka 的网络设计
主要概念
类比思维理解
参考文章 传统下网络服务模型 线程太多无法处理大规模请求
事件监听模型 NIO核心概念 nio是实现reactor模式的底层API代码
单…目录
传统下网络服务模型
事件监听模型 NIO核心概念
单线程Reactor模式
多线程Reactor模式
Kafka 的网络设计
主要概念
类比思维理解
参考文章 传统下网络服务模型 线程太多无法处理大规模请求
事件监听模型 NIO核心概念 nio是实现reactor模式的底层API代码
单线程Reactor模式 优点模型简单没有多线程、进程通信、竞争的问题全部都在一个线程中完成
缺点1性能问题只有一个线程无法完全发挥多核 CPU 的性能。Handler 在处理某个连接上的业务时整个进程无法处理其他连接事件很容易导致性能瓶颈
缺点2可靠性问题线程意外终止或进入死循环会导致整个系统通信模块不可用不能接收和处理外部消息造成节点故障
多线程Reactor模式 整体工作流程如下
Reactor线程接受新的客户端连接并通过Acceptor初始化连接。Reactor线程继续监听并分发读写事件不执行任何业务逻辑计算。对于需要处理的请求Reactor将任务提交到线程池。线程池中的工作线程按需从队列中取出任务执行解码、计算和编码操作。一旦响应准备好相关的数据可以返回给Reactor线程由它发送回客户端。
链接: Scalable IO in Java.pdf Kafka 的网络设计
Kafka 的网络设计和 Kafka 的调优有关这也是为什么它能支持高并发的原因
主要概念 Kafka的网络设计采用了Reactor模式这是一种高效处理并发网络连接的模式。在Reactor模式中有几个关键的组件 Acceptor 负责处理新的网络连接请求。通常运行在单独的线程上监听指定的端口。一旦有新的连接请求它会接受连接并创建一个socket channel。 Processor 处理来自socket channel的I/O事件如读写操作。Processor通常维护一个或多个socket channels并使用非阻塞I/O来同时服务多个连接。 Socket Channel 表示与客户端之间的网络连接。在非阻塞模式下socket channel可以在没有I/O操作可以执行时返回这允许单个线程高效处理多个连接。 请求队列Request Queue和响应队列Response Queue 网络线程接收数据后会把请求放入请求队列由后台的I/O线程或请求处理器进行处理。处理完的响应被放入响应队列等待网络线程读取并发送回客户端。 在Kafka中这个模型被用来实现高效的网络通信。网络线程Processor只负责网络I/O的读写实际的消息处理逻辑例如消息的解码、提交到日志等由其他线程处理从而实现了计算和I/O的解耦提高了整体的性能和可伸缩性。 具体到Kafka的实现它使用了一个或多个网络线程来处理所有网络活动每个线程可以处理多个连接。这些线程不断地检查socket channels看是否有新的数据可读或是否可以写入数据到网络。使用非阻塞I/O确保了单个线程可以有效地处理多个网络请求而不会因为某个慢速的连接而阻塞。 我们可以看到Acceptor和Processor的逻辑分工以及请求和响应在系统中如何流动。请求被放入队列处理器从队列中拉取请求进行处理然后处理完的响应被放回另一个队列等待发送。这个设计允许Kafka的网络层高效地处理成千上万的并发连接。 类比思维理解 想象你在一个快餐店这个快餐店的运作非常类似于Reactor网络线程模型 Acceptor接待员 顾客一进门接待员负责迎接并指引顾客到点餐台。在Reactor模型中Acceptor相当于是接受新连接的组件一旦有新的网络连接它接受连接并创建一个通信通道。 Processor点餐台工作人员 点餐台的工作人员负责处理顾客的订单。他们听取顾客的要求记录订单然后将订单传递给厨房。在Reactor模型中Processor处理来自客户端的I/O事件比如读取数据接受订单和写入数据发送订单到厨房。 Socket Channel订单流转路径 订单从点餐台到厨房再到顾客手中的路径。在Reactor模型中Socket Channel是客户端和服务端通信的通道。 请求队列订单队列 订单被记录在订单队列中等待厨房处理。在Kafka的网络模型中请求队列保存了待处理的网络请求。 厨房业务处理器 厨房的工作人员根据订单制作食物。在Reactor模型中业务逻辑处理器执行类似的角色它处理业务逻辑并准备响应。 响应队列成品出餐区 制作完成的食物被放在成品区等待服务员送到顾客手中。在Reactor模型中响应队列用于存放处理完毕的数据等待发送回客户端。 在这个快餐店模型中点餐台工作人员Processor可以同时处理多个顾客的订单非阻塞I/O并且不需要自己做饭业务逻辑处理。这种工作流程让快餐店服务器可以高效地服务众多顾客并发连接。当食物准备好后服务员网络线程将其送到顾客手中发送响应。这样的模型允许快餐店以最小的人力高效运作类似地Reactor模型使得服务器能够以最小的资源高效处理大量并发网络请求。 所以这就是一个加强版的 Reactor 网络线程模型。 参考文章
Reactor 线程模型_reactor模型_HoryC的博客-CSDN博客
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82327.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!