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

    二、       执行界面

     


     


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

  • 相关阅读:
    获取文件扩展名(后缀)
    文件字节大小显示成M,G和K
    mybatis在Mapper的xml文件中的转义字符的处理
    Java反射中method.isBridge() 桥接方法
    MyBatis框架的使用及源码分析(十三) ResultSetHandler
    MyBatis框架的使用及源码分析(十二) ParameterHandler
    MyBatis框架的使用及源码分析(十一) StatementHandler
    MyBatis框架的使用及源码分析(十) CacheExecutor,SimpleExecutor,BatchExecutor ,ReuseExecutor
    MyBatis框架的使用及源码分析(九) Executor
    MyBatis框架的使用及源码分析(八) MapperMethod
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7105701.html
Copyright © 2020-2023  润新知