千家信息网

ServerSuperIO分组提高交互负载平衡能力的示例分析

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章将为大家详细讲解有关ServerSuperIO分组提高交互负载平衡能力的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。20.1 概述ServerSu
千家信息网最后更新 2025年02月02日ServerSuperIO分组提高交互负载平衡能力的示例分析

这篇文章将为大家详细讲解有关ServerSuperIO分组提高交互负载平衡能力的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

20.1 概述

ServerSuperIO原来在网络通讯模式下,只有一个网络控制器,在自控模式、并发模式和单例模式下时都是异步处理返回的数据,并不会出现性能问题。但是在轮询模式下,一个网络控制器要按顺序逐一操作设备驱动的发送和接收,这样就会出现轮询周期过长,达不到读取数据频率的情况。

为了解决上述问题,现在对设备驱动的参数增加了网络控制器分组功能,网络控制器会根据设备参数设置的分组名称控制设备驱动。例如轮询模式下,有1000个设备驱动,可以每10个设备驱动设置相同的分组名称,这10个设备驱动受控于同一个网络控制器,如果每间隔1s读取一次数据,那么每个设备驱动的轮询周期是10s钟,其他网络控制器类似。

20.2 网络控制器示意图

根据设置设备驱动网络参数的ControllerGroup,可以把设备驱动分配到不同的网络控制中运行,并且适用于轮询、自控、并发和单例控制模式。

20.3 串口控制器示意图

顺便提一下串口控制器,通过设置设备驱动的串口号决定被分配到不同的串口控制器,该控制器只能适用于轮询控制模式。

20.4 设备驱动网络控制器分组示例代码

        static void Main(string[] args)        {            string deviceID = "2";            DeviceDriver dev3 = new DeviceDriver();            dev3.DeviceParameter.DeviceName = "设备2";            dev3.DeviceParameter.DeviceAddr = 0;            dev3.DeviceParameter.DeviceID = deviceID;            dev3.DeviceParameter.DeviceCode = deviceID;            dev3.DeviceDynamic.DeviceID = deviceID;            dev3.DeviceParameter.NET.RemoteIP = "127.0.0.1";            dev3.DeviceParameter.NET.RemotePort = 9600;            dev3.DeviceParameter.NET.ControllerGroup = "G2";            dev3.CommunicateType = CommunicateType.NET;            dev3.DeviceParameter.NET.WorkMode = WorkMode.TcpServer;            dev3.Initialize(deviceID);             deviceID = "3";            DeviceDriver dev4 = new DeviceDriver();            dev4.DeviceParameter.DeviceName = "设备3";            dev4.DeviceParameter.DeviceAddr = 0;            dev4.DeviceParameter.DeviceID = deviceID;            dev4.DeviceParameter.DeviceCode = deviceID;            dev4.DeviceDynamic.DeviceID = deviceID;            dev4.DeviceParameter.NET.RemoteIP = "127.0.0.1";            dev4.DeviceParameter.NET.RemotePort = 9600;            dev4.DeviceParameter.NET.ControllerGroup = "G3";            dev4.CommunicateType = CommunicateType.NET;            dev4.Initialize(deviceID);            IServer server = new ServerManager().CreateServer(new ServerConfig()            {                ServerName = "服务1",                ComReadTimeout = 1000,                ComWriteTimeout = 1000,                NetReceiveTimeout = 1000,                NetSendTimeout = 1000,                ControlMode = ControlMode.Loop,                SocketMode = SocketMode.Tcp,                StartReceiveDataFliter = false,                ClearSocketSession = true,                StartCheckPackageLength = false,                CheckSameSocketSession = false,            });            server.AddDeviceCompleted += server_AddDeviceCompleted;            server.DeleteDeviceCompleted += server_DeleteDeviceCompleted;            server.SocketConnected+=server_SocketConnected;            server.SocketClosed+=server_SocketClosed;            server.Start();             server.AddDevice(dev3);            server.AddDevice(dev4);             while ("exit"==Console.ReadLine())            {                 server.Stop();            }        }

关于"ServerSuperIO分组提高交互负载平衡能力的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

控制 设备 控制器 网络 设备驱动 驱动 模式 分组 示例 串口 参数 数据 篇文章 能力 分析 不同 名称 周期 更多 示意图 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 电力网络安全工作方案 保持网络安全不松懈 软件开发深圳和广州哪个好 黄石市君道网络技术有限公司 车载网络技术拓扑结构 2017互联网 科技项目 数据库轮询方案 共用ssh服务器 猫和老鼠视频软件开发 网络安全知识观后感300 平安互联网科技公司怎么样 红色火焰互联网科技有限公司 电商erp软件开发方案 普陀区自动化软件开发产品介绍 如何重启domino服务器 盘古网络安全插画 动森商店的服务器有什么用 怎么开展亲子网络安全教育 郎溪多功能软件开发服务代理品牌 西部世界云服务器 上海宁臣互联网科技公司靠谱么 闵行区企业软件开发流程 大话3服务器 浙江省衢州市网络安全教育平台 php数据库提示前台表单 考研网络安全还是计算机专业好 网络技术基础定义拓扑结构 携程网络技术大楼A19 宁波企业软件开发系统 逻辑与在数据库中的符号
0