- 论坛徽章:
- 9
|
本帖最后由 wlmqgzm 于 2015-10-19 12:22 编辑
无mutex, 真正无锁的高并发服务器架构, 呵呵.
更重要的还在后面, 就是高可靠网络内核设计.
测试达到了ECHO服务器 每秒33万QPS新建连接 的性能, 还算不错.
主要还是intel 双核 奔腾G3258 的性能太差, 毕竟是最低端的CPU,
测试操作系统版本是国产桌面版 Ubuntu Kylin 桌面, 换服务器版本性能还能提高.
大约每3微秒处理一个连接, 效率确实很高, 包括连接建立, 申请内存, 注册连接管理信息(超时等), 收数据, 发数据, 拆除连接, 删除管理信息. 等步骤.
具体每个步骤, 都是按照高可靠服务器的网络设计规范要求来实现, 每个操作又分为多个子步骤, 例如: 即使是简单的主动拆除连接, 就不是简单的socket close了之, 就包括: shutdown receive, wait, shutdown send, wait, hard close或者soft close等, 可以保证满足在网络连接正常的情况下, 正常退出服务器, 按照高可靠设计规范来设计的标准网络客户端不丢失一个数据包. 不是民用级别的
在正常网络情况下, 无论是哪一端主动拆线, 在底层TCP/IP协议的协调下, 在 服务器端不会出现典型的常见的30秒到4分钟(取决于linux版本)的 time_wait socket, 这个是aparche服务器未开长连接的经典情况,
在高可靠网络设计中, time_wait socket一律出现在标准客户端.
在网络正常情况下, 大部分民用级别的软件, 做不到重启进程过程, 或者退出过程中, 不丢失一个数据包, 这个也是我要开发这个基础包的原因之一.
总之, 关键设计满足 高可靠服务器 的 流程 设计 规范, 不是民用级别的,
后续展望:
网络服务器这一层的开发定型后, 后续是更高一层的数据接口层, 夹在应用层 和TCP/IP层之间, 类似 Google flatbuffer, Google protbuff等, 实现了数据切包. 但是我的多一个设计, 就是可靠性设计, 也是纠错处理的层
这一层的数据包规范的开发, 以及安全可靠层, Google其实没有公开全部信息, 还有部分高可靠性设计在里面, 不是民用级别的,
高可靠网络设计, 即使TCP/IP层出现错误, 也能满足不丢失一个数据包, 就是在网络服务器层上再包装一个安全可靠层级, 最后的代码流, 使用上与TCP/IP一样, 但是, 可靠性达到了永远不会错一个码的. 纠错码有2组以上, 位数很长.
TCP/IP最大的问题是纠错检测码只有16bit, 远程传输如果出错, 或者路由器端少发一个字节, 有6.5万分之一的概率, 错误无法检测到, 民用级别的,
总之, 后续的部分代码也已经开发出来, 即使是增加了大量纠错流程后, 我希望性能还是能够过Google protbuff协议, 现在还在做代码中, 呵呵呵呵 |
|