'IOKING' TCP Transmission Server Engine ('云猴'©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框架,不须要考虑线程的创建和队列的同步问题,仅需定义消息格式然后在对应的消费者线程里处理该消息就可以。
二、 执行界面
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引擎)(预告版)的更多相关文章
- 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 ...
- ISE(Iris Server Engine)是一个基于现代C++的跨平台(Linux和Windows)框架
ISE(Iris Server Engine)是一个基于现代C++的跨平台(Linux和Windows)的高性能多线程并发网络服务器程序框架.它封装了琐碎的socket以及各种操作系统APIs,以面向 ...
- SQL 2008 SP2 找不到SQL Server Engine
原文:SQL 2008 SP2 找不到SQL Server Engine 最近我有个客户碰到一个很奇怪的问题.他安装SQL server 2008 SP2的时候, SP2的安装程序无法找到SQL se ...
- 关于TOE(TCP/IP Offload Engine)
前言 昨天在电脑上抓取的报文,想进行回话,但是发现全部被设备丢弃了,没有debug信息,查看了抓包文件,原来是IP头和TCP.UDP头的检验和全部为0,也就是TOE(TCP/IP Offload En ...
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连
在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连 sql server服务器sqlserver远程连接数据库防火墙在建立 ...
- TCP头部格式详解,附Wireshark对TCP头部抓包分析
TCP之所以能为数据通讯提供可靠的传输,主要在于TCP数据包头部功能非常多. 那么,我们先来看看TCP头部格式(RFC 793.1323定义了TCP头部): TCP头部格式中的内容解析如下:(文末还有 ...
- TCP/IP协议:OSI七层模型、TCP/IP四层模型的对比
1. OSI七层和TCP/IP四层的关系 1.1 OSI引入了服务.接口.协议.分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型. 1.2 OSI先有模型,后有协议,先有标准,后进行 ...
- TCP工作过程;TCP Flood的攻击的原理和现象;TCP协议设计的安全隐患与防范对策
TCP分三个阶段 连接建立(三次握手) 数据传输 连接释放(四次挥手) TCP工作过程 TCP连接建立阶段 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给S ...
- TCP系列32—窗口管理&流控—6、TCP zero windows和persist timer
一.简介 我们之前介绍过,TCP报文中的window size表示发出这个报文的一端准备多少bytes的数据,当TCP的一端一直接收数据,但是应用层没有及时读取的话,数据一直在TCP模块中缓存,最终受 ...
随机推荐
- jsp学习笔记 - 内置对象 session
1.session 主要用来用户的登录和注销 设置用户名,获取用户名 session.setAttribute("username","johnson"); s ...
- javascript按钮点击事件问题
今天弄了个小测试,结果发现了点问题. 就是有一个按钮的点击事件,页面加载时候没反应,只有F12启用开发人员工具的时候才有反应.后来反复测试发现名字起的不太合理 function onclick(){ ...
- SpringBoot项目编译后没有xxxmapper.xml文件解决方法
在pom.xml文件中添加如下代码 <build> <plugins> <plugin> <groupId>org.springframework.bo ...
- Android 按钮常用点击事件大总结
很多学习Android程序设计的人都会发现每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同.因此本文就把这些写法总结一下,比较下各种写法的优劣,希望对大家灵活地选择编码方式可 ...
- 09js、MySQL相关
09js.MySQL相关-2018/07/19 1.js的dom 理解一下文档对象模型:html文件加载到内存之后会形成一颗dom树,根据这些节点对象可以进行脚本代码的动态修改;在dom树当中 一切皆 ...
- 洛谷——P1775 古代人的难题_NOI导刊2010提高(02)&& P1936 水晶灯火灵(斐波那契数列)
P1775 古代人的难题_NOI导刊2010提高(02) P1936 水晶灯火灵 斐波那契数列 1.x,y∈[1…k],且x,y,k∈Z 2.(x^2-xy-y^2)^2=1 给你一个整数k,求一组满 ...
- 网络模型、IP命令、SS命令介绍
1. 分层对应关系 OSI七层模型和TCP/IP五层模型都属于TCP/IP协议栈,而TCP/IP协议栈只有两种传输层协议:TCP.UDP,所以对于Telnet.FTP这些协议,建议称之为承载在TCP之 ...
- 在vmware中 centos7安装gooderp
环境为windows 10系统,vmware 12,centos 7.4.centos安装了gnome桌面,用里面的终端来安装,自带的firefox浏览器. 增加用户 首先要新建一个用户来管理good ...
- Authors and instutes in MCT
Authors and instutes in MCT Table of Contents 1. Authors and Institutes 1.1. Industry 1 Authors and ...
- extract a page from a multiple pages pdf on Ubuntu OS
extract a page from a multiple pages pdf 1 extract a page from a multiple pages pdf use pdftk packag ...