`
韩悠悠
  • 浏览: 839626 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

CshBBrain架构介绍

    博客分类:
  • web
 
阅读更多
在介绍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事件注册。
  • 大小: 50.7 KB
  • 大小: 65.7 KB
分享到:
评论

相关推荐

    宝贝鱼(CshBBrain)_是一个来自中国的简单的轻量级的高性能的WebSocket服务器。支持服_CshBBrain.zip

    宝贝鱼(CshBBrain)_是一个来自中国的简单的轻量级的高性能的WebSocket服务器。支持服_CshBBrain

    开源WebSocket服务器项目 宝贝鱼(CshBBrain)版本发布

    开源WebSocket服务器项目“宝贝鱼”(CshBBrain)提供了一个实现这一功能的解决方案。 CshBBrain V1.0.1是一个针对开发者的工具,它实现了WebSocket服务器的基本功能,并且是开源的,允许开发者根据自己的需求进行...

    CshBBrainAIO V4.0.3(宝贝鱼)

    【CshBBrainAIO V4.0.3(宝贝鱼)】是一个基于Java平台的高级I/O(Asynchronous Input/Output,简称AIO)框架,通常用于开发高性能、高并发的网络应用。AIO与传统的IO模型不同,它允许程序在数据准备就绪后才进行实际...

    CshBBrainJS.zip

    为了更好的支持开发基于Websocket的应用,开源WebSocket服务器项目 宝贝鱼(CshBBrain)推出了与之配套的 前台WebSocket API js CshBBrainJS框架。CshBBrainJS的主要目的是与开源WebSocket服务器项目 宝贝鱼(CshBBrain...

    数据库基础测验20241113.doc

    数据库基础测验20241113.doc

    微信小程序下拉选择组件

    微信小程序下拉选择组件

    DICOM文件+DX放射平片-数字X射线图像DICOM测试文件

    DICOM文件+DX放射平片—数字X射线图像DICOM测试文件,文件为.dcm类型DICOM图像文件文件,仅供需要了解DICOM或相关DICOM开发的技术人员当作测试数据或研究使用,请勿用于非法用途。

    Jupyter Notebook《基于双流 Faster R-CNN 网络的 图像篡改检测》+项目源码+文档说明+代码注释

    <项目介绍> - 基于双流 Faster R-CNN 网络的 图像篡改检测 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    使用epf捕获没有CA证书的SSLTLS明文(LinuxAndroid内核支持amd64arm64).zip

    c语言

    (源码)基于Arduino的天文数据库管理系统.zip

    # 基于Arduino的天文数据库管理系统 ## 项目简介 本项目是一个基于Arduino的天文数据库管理系统,旨在为Arduino设备提供一个完整的天文数据库,包括星星、星系、星团等天体数据。项目支持多种语言的星座名称,并提供了详细的天体信息,如赤道坐标、视星等。 ## 项目的主要特性和功能 星座目录包含88个星座,提供拉丁语、英语和法语的缩写和全名。 恒星目录包含494颗亮度达到4等的恒星。 梅西耶目录包含110个梅西耶天体。 NGC目录包含3993个NGC天体,亮度达到14等。 IC目录包含401个IC天体,亮度达到14等。 天体信息每个天体(不包括星座)提供名称、命名、相关星座、赤道坐标(J2000)和视星等信息。 恒星额外信息对于恒星,还提供每年在赤经和赤纬上的漂移以及视差。 ## 安装使用步骤 1. 安装库使用Arduino IDE的库管理器安装本项目的库。 2. 解压数据库将db.zip解压到SD卡中。

    (源码)基于JSP和SQL Server的维修管理系统.zip

    # 基于JSP和SQL Server的维修管理系统 ## 项目简介 本项目是一个基于JSP和SQL Server的维修管理系统,旨在提供一个高效、便捷的维修管理解决方案。系统涵盖了从维修订单的创建、管理到配件的录入、更新等多个功能模块,适用于各类维修服务行业。 ## 项目的主要特性和功能 1. 用户管理 管理员和客户的注册与登录。 管理员信息的管理与更新。 客户信息的创建、查询与更新。 2. 维修订单管理 维修订单的创建、查询与更新。 维修回执单的创建与管理。 3. 配件管理 配件信息的录入与更新。 配件库存的管理与查询。 4. 评价与反馈 客户对维修服务的评价记录。 系统反馈信息的收集与管理。 5. 数据加密与安全 使用MD5加密算法对用户密码进行加密存储。 通过过滤器实现登录验证,确保系统安全。 ## 安装使用步骤

    devecostudio-windows-3.1.0.501.zip

    HUAWEI DevEco Studio,以下简称DevEco Studio)是基于IntelliJ IDEA Community开源版本打造,为运行在HarmonyOS和OpenHarmony系统上的应用和服务(以下简称应用/服务)提供一站式的开发平台。 作为一款开发工具,除了具有基本的代码开发、编译构建及调测等功能外,DevEco Studio还具有如下特点: - 高效智能代码编辑:支持ArkTS、JS、C/C++等语言的代码高亮、代码智能补齐、代码错误检查、代码自动跳转、代码格式化、代码查找等功能,提升代码编写效率。更多详细信息,请参考[编辑器使用技巧] - 低代码可视化开发:丰富的UI界面编辑能力,支持自由拖拽组件和可视化数据绑定,可快速预览效果

    《计算机视觉技术》实验报告-8.1提取车辆轮廓

    《计算机视觉技术》实验报告-8.1提取车辆轮廓

    springboot小徐影城管理系统(代码+数据库+LW)

    随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。 对于本小徐影城管理系统的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据小徐影城管理系统的现状来进行开发的,具体根据现实的需求来实现小徐影城管理系统网络化的管理,各类信息有序地进行存储,进入小徐影城管理系统页面之后,方可开始操作主控界面,主要功能包括管理员:首页、个人中心、用户管理、电影类型管理、放映厅管理、电影信息管理、购票统计管理、系统管理、订单管理,用户前台;首页、电影信息、电影资讯、个人中心、后台管理、在线客服等功能。 本论文主要讲述了小徐影城管理系统开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的小徐影城管理系统状况,提高管理效率。

    C++与Matlab实现SIFT特征提取算法+项目源码+文档说明+代码注释

    <项目介绍> - SIFT特征提取算法C++与Matlab实现 - 不懂运行,下载完可以私聊问,可远程教学 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    (1991-2024年)国家自然、社科基金部分名单(含部分标书)(最新!!!)

    数据介绍 数据名称:国家自然、社科基金部分名单 数据年份:1991-2024年 样本数量:10万+ 数据格式:PDF、excel

    卓晴-信号与系统课件.pdf

    卓晴

    as-bundled-clients

    as-bundled-clients

    学习时最后的资料包括面试等信息

    学习时最后的资料包括面试等信息

    (源码)基于Spring Boot和Ant Design的雨选课系统.zip

    # 基于Spring Boot和Ant Design的雨选课系统 ## 项目简介 雨选课系统是一个基于Spring Boot和Ant Design框架构建的前后端分离的选课系统。该系统实现了学生选课、成绩查询、教师成绩修改、课程编辑、课程新增等功能。登录信息使用Redis存储,并支持课程图片的上传功能。 ## 项目的主要特性和功能 1. 用户登录与权限管理 学生、教师和管理员分别有不同的登录权限。 登录信息使用Redis进行存储。 2. 课程管理 学生可以查看可选课程列表,并进行选课和退选操作。 教师可以查看自己教授的课程,并修改学生成绩。 管理员可以编辑和新增课程。 3. 成绩管理 学生可以查询自己的成绩。 教师可以修改学生的成绩。 4. 图片上传 支持课程图片的上传和展示。 5. 日志记录 系统记录请求和响应的日志信息,便于问题追踪和性能分析。

Global site tag (gtag.js) - Google Analytics