在介绍CshBBrain服务器架构前,我们先分析下业界流行NIO框架的架构,目前业界流行的NIO框架有Mina,Netty,Grizzly等。他们都采用了Reactor模式,下面上张Reactor模式的示意图:
1.核心组件包括:
1.1.Synchronous Event Demultiplexexer:Event loop + 事件分离
1.2.Dispatcher:事件派发,可以采用多线程实现
1.3.Rqeust Handler:事件处理,业务代码
2.Reactor线程配置:
2.1 Boss Thread + Worker Thread:
2.1.1.Boss 处理OP_ACCEPT、OP_CONNECT,处理连接的接入
2.1.2.Worker处理OP_READ、OP_WRITER,处理IO读写
2.2 Reactor线程数量配置:
Netty: 1 + 2 * CPU内核数量
Mina: 1 + CPU 内核数量 + 1
Grizzly: 1 + 1
CshBBrain:1 + n * CPU内核数量 (运行时可根据需要自己灵活配置,n:为网络数据读写监听线程CPU内核因子,例如设置为1则表示系统将为每个内核创建1个数据读写监听线程,你可以根据自己服务器的性能和需要配置2,4,8个读写监听线程每内核;设置将更加灵活,对应到系统参数monitorWorker)
3.Reactor模式分工模型:
3.1.OP_READ和OP_ACCEPT都运行在reactor线程
3.2.OP_ACCEPT运行在reactor,OP_READ运行在单独的线程。
3.3.OP_READ和OP_ACCEPT都运行在单独的线程
3.4.OP_READ运行在reactor线程,而OP_ACCEPT运行在单独的线程
4.Reactor模式分工模型的选择
4.1.类echo应用,unmashall和业务处理的开销非常低,选择第一种模型。创建线程和切换线程的开销
4.2.第二、第三、第四种模型,从测试来看,OP_ACCEPT的处理开销很低;从已经完成三路握手的队列移出
4.3.最佳选择:第二种模型,unmashall一般是cpu-bound.业务逻辑代码通常比较耗时,不要在reactor线程处理
CshBBrain 采用的是第二种分工模型。
上张CshBBrain服务器的架构图:
在开发CshBBrain之前,有研究过Mina和Netty,从Mina和Netty的设计上借鉴了不少思想。
1.connectMonitor:负责accept和建立连接,并将连接的Read和Write事件分派给具体的readWriteMonitor线程,分配策略采用简单的平均分配法。
2.readWriteMonitor:负责监听每个连接的Read事件和Write事件,并注册连接的Read和Write监听事件。当程序触发Write事件,直接调用连接的Write代码。当触发连接的Read事件时,程序创建一个Read task 并将Read task放入Read task Queue队列中。
3.processDistribute:负责给Read task Queue队列中的任务分配Worker处理线程进行处理。
4.Worker:负责从连接读取数据,解码数据,调用业务处理程序,编码数据,并创建write task 任务放入到Write Task Queue,readWriteMonitor线程会获取队列中的write task 进行write事件注册。
- 大小: 65.7 KB
- 大小: 50.7 KB
分享到:
相关推荐
宝贝鱼(CshBBrain)_是一个来自中国的简单的轻量级的高性能的WebSocket服务器。支持服_CshBBrain
开源WebSocket服务器项目“宝贝鱼”(CshBBrain)提供了一个实现这一功能的解决方案。 CshBBrain V1.0.1是一个针对开发者的工具,它实现了WebSocket服务器的基本功能,并且是开源的,允许开发者根据自己的需求进行...
【CshBBrainAIO V4.0.3(宝贝鱼)】是一个基于Java平台的高级I/O(Asynchronous Input/Output,简称AIO)框架,通常用于开发高性能、高并发的网络应用。AIO与传统的IO模型不同,它允许程序在数据准备就绪后才进行实际...
为了更好的支持开发基于Websocket的应用,开源WebSocket服务器项目 宝贝鱼(CshBBrain)推出了与之配套的 前台WebSocket API js CshBBrainJS框架。CshBBrainJS的主要目的是与开源WebSocket服务器项目 宝贝鱼(CshBBrain...
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于java的驾校收支管理可视化平台的开题报告
时间序列 原木 间隔5秒钟 20241120
毕业设计&课设_基于 Vue 的电影在线预订与管理系统:后台 Java(SSM)代码,为毕业设计项目.zip
基于springboot课件通中小学教学课件共享平台源码数据库文档.zip
基于java的网上购物商城的开题报告
Delphi人脸检测与识别Demo1fdef-main.zip
基于java的咖啡在线销售系统的开题报告
基于java的自助医疗服务系统的开题报告.docx
内容概要:本文档全面介绍了Visual Basic(VB)编程语言的基础知识和高级应用。首先概述了VB的基本特性和开发环境,随后详细讲述了VB的数据类型、变量、运算符、控制结构、数组、过程与函数、变量作用域等内容。接着介绍了窗体设计、控件使用、菜单与工具栏的设计,文件操作、数据库访问等关键知识点。最后讨论了VB的学习方法、发展历史及其在桌面应用、Web应用、数据库应用、游戏开发和自动化脚本编写等领域的广泛应用前景。 适合人群:初学者和中级程序员,尤其是希望快速掌握Windows桌面应用开发的人群。 使用场景及目标:①掌握VB的基础语法和开发环境;②学会使用VB创建复杂的用户界面和功能完整的应用程序;③理解数据库操作、文件管理和网络编程等高级主题。 其他说明:Visual Basic是一种简单易学且功能强大的编程语言,尤其适合用于开发Windows桌面应用。文中不仅覆盖了基础知识,还包括了大量的实用案例和技术细节,帮助读者快速提升编程技能。
基于java的疫情期间高校防控系统开题报告.docx
基于springboot+vue社区老年人帮扶系统源码数据库文档.zip
基于java的超市商品管理系统的开题报告.docx
基于SpringBoot房屋买卖平台源码数据库文档.zip
xdu限通院23微处理器系统与应用大作业(两只老虎),适应于汇编语言keil软件,
<项目介绍> - 新闻类网站系统,基于SSM(Spring、Spring MVC、MyBatis)+MySQL开发,高分成品毕业设计,附带往届论文 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------