关键词:

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框架,不须要考虑线程的创建和队列的同步问题,仅需定义消息格式然后在对应的消费者线程里处理该消息就可以。

二、       执行界面

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3Vlc3Rjb2Rl/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">

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、 待全部功能都測试完成后再连一些測试数据和截图一起公布,因此此次公布定为预告版。

'IOKING' TCP Transmission Server Engine ('云猴'©TCP通讯server引擎)(预告版)的更多相关文章

  1. Method of offloading iSCSI TCP/IP processing from a host processing unit, and related iSCSI TCP/IP offload engine

    A method of offloading, from a host data processing unit (205), iSCSI TCP/IP processing of data stre ...

  2. ISE(Iris Server Engine)是一个基于现代C++的跨平台(Linux和Windows)框架

    ISE(Iris Server Engine)是一个基于现代C++的跨平台(Linux和Windows)的高性能多线程并发网络服务器程序框架.它封装了琐碎的socket以及各种操作系统APIs,以面向 ...

  3. SQL 2008 SP2 找不到SQL Server Engine

    原文:SQL 2008 SP2 找不到SQL Server Engine 最近我有个客户碰到一个很奇怪的问题.他安装SQL server 2008 SP2的时候, SP2的安装程序无法找到SQL se ...

  4. 关于TOE(TCP/IP Offload Engine)

    前言 昨天在电脑上抓取的报文,想进行回话,但是发现全部被设备丢弃了,没有debug信息,查看了抓包文件,原来是IP头和TCP.UDP头的检验和全部为0,也就是TOE(TCP/IP Offload En ...

  5. 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连

    在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连 sql server服务器sqlserver远程连接数据库防火墙在建立 ...

  6. TCP头部格式详解,附Wireshark对TCP头部抓包分析

    TCP之所以能为数据通讯提供可靠的传输,主要在于TCP数据包头部功能非常多. 那么,我们先来看看TCP头部格式(RFC 793.1323定义了TCP头部): TCP头部格式中的内容解析如下:(文末还有 ...

  7. TCP/IP协议:OSI七层模型、TCP/IP四层模型的对比

    1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行 ...

  8. TCP工作过程;TCP Flood的攻击的原理和现象;TCP协议设计的安全隐患与防范对策

    TCP分三个阶段 连接建立(三次握手) 数据传输 连接释放(四次挥手) TCP工作过程 TCP连接建立阶段 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给S ...

  9. TCP系列32—窗口管理&流控—6、TCP zero windows和persist timer

    一.简介 我们之前介绍过,TCP报文中的window size表示发出这个报文的一端准备多少bytes的数据,当TCP的一端一直接收数据,但是应用层没有及时读取的话,数据一直在TCP模块中缓存,最终受 ...

随机推荐

  1. JSP学习笔记 - 内置对象 Response

    1.response.addHeader("refresh","2"): 制定页面刷新时间 2.response.addHeader("refresh ...

  2. ERwin逻辑模型

    1.自动排序 Format>>Preferences>>Layout Entire Diagram CA ERwin

  3. Windows提高_1.3文件操作

    文件操作 不带句柄的文件操作 // 1. 拷贝文件,第三个参数为 FALSE 表示会覆盖 // CopyFile(L"D:\\1.txt", L"E:\\2.txt&qu ...

  4. day19-常用模块IV(re、typing)

    目录 re模块 typing模块 爬取音频 re模块 用来从字符串(文本)中查找特定的东西 1.元字符:有特殊意义的字符 ^ 从开头匹配 import re a = re.findall('^abc' ...

  5. Semi-colon expected (eclipse 引入 json文件报错)

    最近做的项目用到的前端框架有一个json文件夹,里面全是json文件,所以导入Eclipse的时候会在整个项目上都是红叉,但是其实不影响项目运行的,之前忙着码代码也没时间管他,这个红叉存留了一个月!今 ...

  6. [linux]centos7下解决yum install mysql-server没有可用包

    第一步:安装从网上下载文件的wget命令 [root@master ~]# yum -y install wget 第二步:下载mysql的repo源 [root@master ~]# wget ht ...

  7. 表格头部header固定

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Navigator的学习

      Navigator 对象包含有关浏览器的信息.注释:没有应用于 navigator 对象的公开标准,不过所有浏览器都支持该对象.   我感觉需要看什么属性和方法,直接输出这个navigator,然 ...

  9. Android BottomSheet:以选取图片为例(2)

     Android BottomSheet:以选取图片为例(2) 附录文章5简单介绍了常见的分享面板在BottomSheet中的具体应用.本文再以常见的选取图片为例写一个例子. 布局文件: < ...

  10. [luoguP1196] 银河英雄传说(并查集)

    传送门 记录 up[x] 表示 x 上方有多少个 all[x] 表示当前连通的有多少个 find 的时候 和 合并的时候 更新一下即可 ——代码 #include <cstdio> #in ...