#39;IOKING#39; TCP Transmission Server Engine (#39;云猴#39;#169;TCP通讯server引擎)(预告版)...

2024-01-01 09:20

本文主要是介绍#39;IOKING#39; TCP Transmission Server Engine (#39;云猴#39;#169;TCP通讯server引擎)(预告版)...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关键词:

IOKING IOCP TCP  Transmission Server Engine Lock Free Interlocked

云猴完毕portTCP通讯server引擎 无锁 原子锁(函数)


'IOKING' TCP Transmission Server Engine ('云猴'©TCP通讯server引擎)(预告版)


下载连接:

http://download.csdn.net/detail/guestcode/7474171

 

补充:

无锁消息引擎已经完毕:

http://blog.csdn.net/guestcode/article/details/44964951


一、       技术要点

I O C P:基于Windows的IOCP模型

句柄重用:避免反复创建socket句柄

内 存 池:专有的IO内存管理

无    锁:消息队列、连接池和内存池的多线程竞争不只实现了0内核态,还是连原子函数均未使用的真正得的“无锁”

限    速:限制client发送最大流量(避免恶意流量攻击)。限制client接收最小流量(client接收数据连续低于此速率3秒钟,将会被断开,避免恶意连接)

X86&X64:全然兼容两个系统平台

IPv4&IPv6:全然兼容两种IP格式

日    志:具有更完好的日志信息,便于server的故障分析,每秒採用数据存于Logs文件夹

引    擎:内置了生产消费者线程(包括能用于数据库操作和磁盘操作的线程)和生产消费队列,设置队列的生产消费关系能够架构复杂的应用server框架,不须要考虑线程的创建和队列的同步问题,仅需定义消息格式然后在对应的消费者线程里处理该消息就可以。

 

二、       执行界面

 


 


1、 点击Start

2、 设置监听IP和port点击Listen

 

三、       主要配置參数

iBuf:输入(接收)缓冲

oBuf:输出(发送)缓冲

IsIPv6:Socket句柄初始化默认是否是IPv6,假设监听地址是IPv6,最好打钩,能够避免句柄重用时的初始化

Max Input:最大输入速率(KB/S),限制发送client速率,避免恶意攻击,0为不限制

Min Output:最小输出速率(KB/S),client接收数据连续低于此速率3秒钟,将会被断开。避免恶意连接,0为不限制

 

四、       測试表现

用例1:

client:GSocketclient,1000个连接。回射模式:client收到上一个回射数据包后再发送下一个数据包

GSocket Server:CPU平均占用25%

IOKING Server:CPU平均占用22%+

数据包的往返时间一致

 

用例2:

client:GSocketclient。1000个连接,密集数据模式:client投递完一个数据包后马上再投递下一个数据包

GSocket Server:CPU平均占用26%+

IOKING Server:CPU平均占用15%-

GSocket Server:数据包往返时间超过2秒

IOKING Server:数据包往返小于600毫秒

 

结果:用例1情况下,基本没有多大区别。但在用例3情况下,数据越密集,与GSOCKET相比,IOKING具有更佳的表现。

达到了设计预期。

 

五、       开发过程

IOKING是GSOCKET1.0公布以后就開始着手做的。原来仅仅是考虑通讯引擎功能,前后历经了5年,为最求真正的“无锁”非常多技术问题须要慢慢的測试和求证。前后经过无数次的推到重建。期间研究了非常多锁和队列。经过充分分析IO事件的紧要等级和合理调配线程的角色,才得以“无锁”的实现(所谓无锁是指程序猿能控制的线程竞争区域实现的无锁操作,包含不使用原子函数(指令)在内实现的同步机制)。

在开发后期,增加了生产消费者线程和生产消费队列。这是个人每次做server程序都非常讨厌的反复创建server程序框架代码,有了这个功能即降低了反复工作也避免了新代码的Bug,还降低了server程序架构的所需的技术水平要求。

因此整个组件命名为:TCP通讯server引擎。由网络IO引擎和消息引擎(生产消费)这两大核心模块组成。

原定中文名为:泛虎(IO为泛,king为虎),经过多番思量才在2010年终于定为:云猴(IO为云,King为猴)。不想它能有多大作为。仅为体现一个程序猿认真的做事态度和完美的执着最求。

 

六、       公布说明

1、 消息引擎尚未全然測试,临时公布EchoServer

2、 測试可能由于个人硬件配置和软件配置等因素影响

3、 尚未做好保护措施。Demo暂不包括组件LIB文件。

4、 附带的exe具有全然功能可做压力測试用以參考。

使用前请对exe进行安全监測。本人无法确定自己的机器是否具有“危急”亦无法确定exe是否已经感染了“危急”,对此本人不担负不论什么责任。

5、 待全部功能都測试完成后再连一些測试数据和截图一起公布,因此此次公布定为预告版。

 

 

这篇关于#39;IOKING#39; TCP Transmission Server Engine (#39;云猴#39;#169;TCP通讯server引擎)(预告版)...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/558811

相关文章

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w