关于I0CP(高并发服务器 构架)的调研(随笔)

      基于异步socket的服务器框架。已经基本完成,测试结果很满意。但并发量不算太高,

这种构架本身的结构限制了它的性能。 但一般应用够了。看了很多IOCP的介绍,看的心理痒痒,

也考虑尝试下。虽然没有实际写过一行与IOCP有关的代码,但从资料分析来看,IOCP 就是个快

速的收发器。神话了的东西,其实原理简单的在我们日常生活中,天天发生。实质就是异步处理,

告诉A去做什么,告诉B 去做什么。。。。关键就是要协调好他们的关系。管理的武器就是多线程,

但不是 connection_per_thread初步考虑 iocp 本身用一个线程(单CPU)作数据收发。然后再启动

N个逻辑线程,用于数据处理。具体启动几个逻辑线程,要根据实际需要来定。如果是简单 ECHO

服务器,一个逻辑线程就OK了,线程少了,系统用于线程管理的代价也少。基本原则是线程最少化。

       收发器(IOCP) 与逻辑线程间的通信问题,考虑了很久,初步决定采用 双缓冲队列,接收数据一

个队列,发送数据一个队列。队列是双缓冲.例如,在接收数据的时候,IOCP线程把收到的数据压入

接收队列A,逻辑线程处理队列B中的数据,避免”等待“,一切用异步的思想解决问题。但 队列切换

还是要作同步处理的。想想也很简单,关键端就完成了。

     逻辑线程处理具体业务的时候,也要注意不能处于阻塞模式(例如处理一个复杂的计算,或者一个耗

时的数据库查询。。。)这种情况下,就要开启一个新的线程。把耗时的操作放到线程中运行。运行完成

后,以某种方式通知逻辑线程(又是个伤脑筋的事)。

    通过前面第一个服务器程序的编写,最大的体会就是 delphi 太害人,提供了太多简便的东西。但实在

是、不适合于服务器端开发。delphi本身提供的一些函数,性能问题比较突出,在实际测试中,base64

 编码函数,数据压缩函数(Zlib)都作了优化。优化后的速度有了质的飞跃。为了传输数据时候进行加密,

开始考虑过用RSA也有Delphi的实现代码,没做测试,就否定了,原因很简单,速度太慢了。改用AES加

密算法,找到了网上的一AES 的delphi实现,客户端使用效果良好,服务器端也做了必要的速度优化。效

果还是比较满意。服务器端开发delphi中的string类型,最好消失掉,但string类型太好用了,小量的应用

还是必须的,否则很多基础函数都要重新写。有人会提出疑问,为什么要少用string类型变量,哈,以后

我高兴的时候,会专门讲解服务优化的问题。

 

  总之,服务器要达到高性能,高稳定性,高并发性。。。是不可能完成的任务。万物相生相克。


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值