- 2
- 0
- 约4.75千字
- 约 10页
- 2019-06-01 发布于浙江
- 举报
目录
TOC \o 1-3 \h \z \u 功能概述 2
网络通信层 3
连接生命周期的管理 3
接口 3
异步IO缓冲内存池 3
本地数据与字节流数据的互相转换 4
信令和通信数据结构 5
伪代码定义 5
命令管理 7
数据有效性检测 8
文件传输通道 9
日志 10
功能概述
服务器主要业务功能是连接物管和终端,为社区物管和管理中心提供管理功能,使其能够统一管理终端。
服务器的功能模块包括:
数据管理,数据包括房屋数据、住户数据、配租数据、门禁卡数据、终端配置数据等;
状态管理,服务器需要维持物管和终端的连接,保持连接状态的可增删改查;
命令管理,物管和终端之间的交互命令有确认机制,命令通过服务器传递,服务器需要保证命令传递的可靠性;
数据有效性检测,服务器需要定期检测一些数据的有效性,包括配租数据是否(临近)到期、门禁卡白名单数据与终端定期交换等;
文件传输通道,包括软件版本升级、数据文件传输等;
日志。
网络通信层
通信层负责业务命令和数据的发送接收。由于物管、终端和服务器之间命令和数据需要精确送达,所有业务都采用TCP来实现。
IOCP模型是Windows服务器开发中性能最好的非阻塞异步IO模型,所以通信层采用IOCP模型构建。Windows下有五种非阻塞I/O模型:选择(Select)、异步选择(WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)。Select是同步IO模型,同时处理的任务有限(上限1024),不符合处理成千上万连接的要求;WSAAsyncSelect也是同步IO模型,以接收Windows消息为基础,不符合服务器控制台程序要求;WSAEventSelect也是同步IO模型,需要创建与连接数等同的事件内核对象,资源未能高效利用,也排除在外;上面三种IO模型其实是一回事,都是类select模型,适合开发小型服务器或者客户端程序,而不适合需要接受成千上万连接的服务器程序。Overlapped I/O是异步IO模型,但是它需要程序员关心线程池的实现和调度(类似Linux下面的epoll模型,但是epoll是同步IO模型);而IOCP克服了上面四种模型的缺点,对实现大连接数的服务器有可靠的性能和较少的资源占用,而且伸缩性比较强,占用资源数跟连接数量相关,甚至可以用在客户端程序上面。
连接生命周期的管理
C++语言没有对象回收(GC)机制,生命周期的管理和防止内存泄露需要程序自己实现,而一条连接从产生后到销毁的过程中会有多个线程同时对其进行操作,同时读写甚至同时关闭,对象的多线程同步也需要程序实现。这里采用智能指针(shared_ptr, stl_c++11)来管理连接的生命周期,通信层维护各个连接在内存中唯一一份数据,同时提供引用计数,统计当前该数据被外界使用情况,当外界没有角色再需要该数据时(引用计数减到0),通信层会删除这份数据,同时表明该连接生命周期终止。
接口
数据接口采用handle/body手法,连接的handle采用整形数据,body采用C++对象封装连接数据,数据包含SOCKET句柄、连接状态和当前接收缓存(业务层)等。连接生命周期反映到handle上表现为该handle是否为有效。发送内存采用智能指针(unique_ptr, stl_c++11)进行传递,这里用到了智能指针对数据和数据析构的封装,发送完成之后直接调用其删除器(deleter)进行内存的删除,这样上下层之间就避免了一次内存拷贝。
回调接口为C++接口(纯虚函数)。
异步IO缓冲内存池
由于系统层和stl层容器都实现了小内存内存池,所以程序将不再实现自己的内存池,发送缓冲内存完全动态分配,接收缓冲内存每个连接有一份,也通过动态分配而来。
本地数据与字节流数据的互相转换
本地数据转换为字节流数据时,根据本地数据大小构造字节流对象,然后将本地数据逐字节填入流中,可变数组先填入数组大小再逐个填充数组内容。
字节流数据转换为本地数据时,根据字节流中标识的大小动态构造本地数据,构造时使用智能指针(unique_ptr, stl_c++11)管理数据,加上C++多态特性,可以大大简化内存的管理。
信令和通信数据结构
信令设计的原则是方便数据分析,即通过抓包工具得到数据后能够方便地定位到信令所属业务类型。通信数据结构的设计原则是数据之间相互独立,减少耦合,但是又方便扩展,而且方便与本地数据之间的转换。
由于交互三方(服务器、终端、物管)采用三种不同的语言来实现,数据结构的定义必然各有不同,所幸三方都是面向对象语言,因此可以使用C++定义作为其他两方
您可能关注的文档
- 房屋拆除工程施工合同.doc
- 房屋拆除施工安全生产协议书.doc
- 房屋拆除施工合同(清包工).doc
- 仿木栏杆施工的工艺.docx
- 飞行器控制系统设计.doc
- 非盈利组织的管理.doc
- 非营利组织管理战略规划书.doc
- 非营利组织人力资源管理.doc
- 肺结核患者出院后随访方案.doc
- 废气方案定稿(喷淋紫外活性炭).docx
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测生物试卷+答案.doc
- 安徽省华师联盟2025-2026学年高三上学期1月质量检测语文试卷+答案.doc
- 四川省绵阳南山中学实验学校2025-2026学年高三上学期1月月考数学含答案.doc
- 2026届辽宁省大连市高三上学期双基考试物理试卷+答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测化学含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测生物含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测英语含答案.doc
- 辽宁名校联盟2026年1月高三上期末联考质量检测政治含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试化学含答案.doc
- 黑龙江省龙江教育联盟2026年1月高三上学期期末考试生物含答案.doc
原创力文档

文档评论(0)