在介绍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...
资源描述: 机型代码:dada 1-----工程固件可以用于修改参数 开启diag端口。可以用于修复tee损坏以及修复底层分区。 2-----此固件是完整官方。不是第三方打包。请知悉 3-----此固件可以解锁bl后fast模式刷写。也可以底层深刷。也可以编程器写入 4-----请会用此固件 了解工程固件常识以及会用的朋友下载。 5-----个别高版本深刷需要授权才可以刷入。需要自己会刷写。 6------资源有可复制性。下载后不支持退。请考虑清楚在下载哦 工程资源常识可以参考博文:https://blog.csdn.net/u011283906/article/details/141815378 了解基本
牙买加太阳能电池板检测7-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar牙买加太阳能电池板检测-V11 2023-02-09 7:47 PM ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解和搜索非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 对于最先进的计算机视觉培训笔记本,您可以与此数据集一起使用 该数据集包含1406张图像。 太阳能板以可可格式注释。 将以下预处理应用于每个图像: *调整大小为640x640(拉伸) 没有应用图像增强技术。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
【资源说明】 基于卷积神经网络的衣服识别系统详细文档+全部资料+优秀项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
【资源说明】 基于卷积神经网络的人脸识别项目详细文档+全部资料+优秀项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
【资源说明】 基于selenium与requests的暨南大学自动健康打卡程序资料齐全+详细文档+高分项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
AppleMusic微信小程序+期末大作业
【资源说明】 基于CNN视觉识别和知识图谱的饮食推荐系统资料齐全+高分项目+文档+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
有java环境就可以运行起来 ,zip里包含源码+论文+PPT, 系统设计与功能: 文档详细描述了系统的后台管理功能,包括系统管理模块、新闻资讯管理模块、公告管理模块、社区影院管理模块、会员上传下载管理模块以及留言管理模块。 系统管理模块:允许管理员重新设置密码,记录登录日志,确保系统安全。 新闻资讯管理模块:实现新闻资讯的添加、删除、修改,确保主页新闻部分始终显示最新的文章。 公告管理模块:类似于新闻资讯管理,但专注于主页公告的后台管理。 社区影院管理模块:管理所有视频的添加、删除、修改,包括影片名、导演、主演、片长等信息。 会员上传下载管理模块:审核与删除会员上传的文件。 留言管理模块:回复与删除所有留言,确保系统内的留言得到及时处理。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上
学生考勤功能描述旨在通过数字化手段提升学校的考勤管理效率,实现学生考勤记录的自动化、实时化与精细化。以下是该功能的核心模块和特点: 1. 考勤记录 自动打卡:支持学生通过多种方式(如刷卡、指纹识别、二维码扫描、GPS定位等)自动打卡,简化考勤流程。 手动补卡:若学生未能及时打卡,允许教师进行手动补卡操作,确保考勤记录的完整性。 多班级管理:支持多个班级的考勤管理,教师可以轻松查看和管理所负责班级的考勤信息。 2. 考勤状态管理 出勤:记录学生按时到达课堂的情况。 迟到:记录学生迟到的时间,并可设置迟到时间阈值,超过规定时间则自动标记为迟到。 早退:记录学生提前离开课堂的时间。 缺席:记录学生未到课堂的情况,可以分为请假缺席和未请假缺席。 请假:学生可通过系统提交请假申请,教师审核通过后,系统自动记录为请假缺席。 3. 考勤统计与分析 出勤率统计:自动计算每个学生的出勤率、迟到率、缺席率等,方便教师和学校管理人员了解学生的考勤情况。 班级出勤报告:生成班级的整体出勤情况报告,包括出勤率、迟到率、早退率等,帮助教师了解班级的整体出勤状况。 月度/学期考勤总结:根据设定的时间段(如月度、学
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;
Kubernetes 整体结构图
【资源说明】 基于selenium的一个新式烤推机 易部署资料齐全+详细文档+高分项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
基于 TensorFlow.js 的 YOLOv5 实时目标检测项目。支持自定义模型,轻量安装、使用方便、可移植性强 基于 TensorFlow.js 的 YOLOv5 实时目标检测项目(源码+运行说明文档) 基于 TensorFlow.js 的 YOLOv5 实时目标检测项目。支持自定义模型,轻量安装、使用方便、可移植性强 基于 TensorFlow.js 的 YOLOv5 实时目标检测项目(源码+运行说明文档) 基于 TensorFlow.js 的 YOLOv5 实时目标检测项目。支持自定义模型,轻量安装、使用方便、可移植性强 基于 TensorFlow.js 的 YOLOv5 实时目标检测项目(源码+运行说明文档) 基于 TensorFlow.js 的 YOLOv5 实时目标检测项目。支持自定义模型,轻量安装、使用方便、可移植性强 基于 TensorFlow.js 的 YOLOv5 实时目标检测项目(源码+运行说明文档) 基于 TensorFlow.js 的 YOLOv5 实时目标检测项目。支持自定义模型,轻量安装、使用方便、可移植性强 基于 TensorFlow.js 的
有java环境就可以运行起来 ,zip里包含源码+论文+PPT, 系统设计与功能: 文档详细描述了系统的后台管理功能,包括系统管理模块、新闻资讯管理模块、公告管理模块、社区影院管理模块、会员上传下载管理模块以及留言管理模块。 系统管理模块:允许管理员重新设置密码,记录登录日志,确保系统安全。 新闻资讯管理模块:实现新闻资讯的添加、删除、修改,确保主页新闻部分始终显示最新的文章。 公告管理模块:类似于新闻资讯管理,但专注于主页公告的后台管理。 社区影院管理模块:管理所有视频的添加、删除、修改,包括影片名、导演、主演、片长等信息。 会员上传下载管理模块:审核与删除会员上传的文件。 留言管理模块:回复与删除所有留言,确保系统内的留言得到及时处理。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上