[软件设计]
抓娃娃机网络管理系统中的网络服务器通信模块。(最好为D
任务编号:599812
悬赏任务8300元
悬赏任务 : 按雇主需求进行任务后提交稿件,被采纳后即获得佣金。
抓娃娃机网络管理系统中的网络服务器通信模块。(最好为D
距截止:
任务已圆满完成
雇主已托管赏金:8300 元
雇主发布需求
雇主托管佣金
服务商投稿
雇主开始选稿
任务完成
任务大厅共需1个合格投稿 | 每稿将获得8300 元 | 每人交稿次数不限 可多次任务
投诉举报
联系Ta
我来承接
已有1 个投稿 | 已采纳1 稿 | 拒绝0 稿 | 目前中标名额已满
任务需求:
软件功能要求
以下“本程序”,“本模块”就是本次要求开发的软件。
注:校验方式为第一个字与下一个字节做XOR所得值再与下一个字节做XOR,以此类推直至最后一个,得出校验值。
一.性能要求
游乐消费管理程序应满足以下要求:连接2000个以上终端,1秒2000次以上的访问压力,(4核,16G内存服务器,有30万以上会员数据,充值、消费记录100万条以上,机器终端记录2000条以上),并且响应速度应在3秒以内(即完成如客人扫码或刷卡确认后,服务器必须在3秒以内完扣币等相关操作后完成发送开动机器指令),由于数库可能被其它模块读写同时本程序也有可能部署多个实例,请在读写数据库时考虑并发的情况,防止锁死及脏读数据,尤其是更新会员币值时要认真考虑,为了提高效率,SQL语句较多时应使用存贮过程,为了提高数据库查询、更新速度请在相关表使用分区设计技术(如会员表、消费记录表等),可以分为5~10个区。
二.功能说明 (以下各功能请封装为类,实在有难度的请沟通后处理)
1.手机消费对接接功能部分(A)
本功能主要是负责处理手机刷二维码投币的业务,这个小功能模块(A)连接手机消费模块,是否采用长连接请自行考虑。
此部分可采用以下两种方式:
I方式:手机消费模块使用PHP编写,当用户扫码后APP会将 机器终端号传到手机消费模块,手机消费模块会向本程序块传递机器终端号及会员号,本程序判断业务合法后,完成扣币、并向相应被扫硬件发送开投币指令,如投币成功则本次交易成功,并传递交易结果给手机消费模块,如失败则回滚本次所有操作,并传递结果结手机消费模块。以上所有操作无论成功失败均需做操作记录。
II方式:原理上I方式相同,只是将分本程序分离成2个独立模块,一个模块(B1模块)专门连接手机消费模块,一个模块(B2)负责本模块分离后的其它工作(连接机器、负责刷卡业务等),B1专门处理业务判断,合法消费,即发送投币指令给B2模块,B2向机器发送投币,结果回传给上级块。以上所有操作无论成功失败均需做操作记录
两模块握手协议: 通信双方都会从sysini 表中取得 connparm字段值,手机消费模块向本模块发起连接请求发送connparm字段值,正确后取得连接,如错即刻断开,
手机模块传送扫码信息指令,0xAA(十六进制)
格式(接收):0xAA+会员号4字节+机器号2字节+投币数2字节+流水号2字节+卡类型1字节+ 校验1字节
(回传):0xAA+机器号2字节+流水号2字节+标志1字节+校验1字节
(标志值 :1 成功,非1即为失败,0币额不足,2无本机权限,3其它,请尽量补充)
接收到扫码指令后,要考虑机器的合法性(如是否停用),卡类型:年卡1、次卡2、普卡(币值卡)3、临时卡4管理卡5员工卡
(年卡的当日消费情况要除了要记录在消费记录表中,还要记录在年卡当日消费表里因为年卡有5分钟消费间隔,为了提高响应速度才这样设计)
2.硬件终端对接部分(B)
本部分主要是连接硬件终端,全部是长连接,终端每隔一段时间发送心跳包,本部分接收来自终端的刷卡信息、向终终发送各种指令(如配制指令、投币指令等),本部分要为其它模块提供接口,以供其它问部分调用,比如管理模块要通过此模块向硬件发送配制指令等。(请参照料通信协议书)
3.管理模块接口部分(C)
本部分负责与系统管理程序的对接,接收管理程序的指令以供本程序下传至硬件终端,并回传结 果给系统管理程序(请参照料通信协议书),本模块
4.内部功能(D)
5.其它
(暂无)测试指令,本指令专门用于开发时快速测试压力,正式布署时关闭,0xFF
格式
编写一个程序模拟硬件终端与本程序进行通信,模拟程序向本程序发送心跳包,发送刷卡数据--》本程序处理扣币回应,下发投币指令---终端回应,模拟真实的刷卡消费情形,一直重复以上过程,一个模拟程序进程要能并发1~500个连接(由用户选择),界面显示连接时间,发送次数,接收次数,投币次数,服务器IP或域名,端口等。请注意模拟的用户号及机器号都应存在于服务器数据库中,用户号和机器号可以随机选取反复随机使用。
本程序参数记录在INI文件中
三.部分技术要求
游乐硬件消费控制部分,为了提高系统响应速度,应在系统中应用数据高速缓存技术,如REDIS或MEMCACHED,在这一部分代码中必须使用大量应用上技术,同时要保证数据的同步及可恢复,所以我们优先选择REDIS系统。 与硬件通信这部份代码应封装为一个类,以方便日后更换硬件或升级硬件。如用DELPHI写则应考虑负载均衡及容错,
PHP连接数据库应使用长连接。
四.外包源码档求:
1.请尽量优化JS文件及CSS文件(是优化减小体积,不是压缩,必须保证明码可读),源码文件中过程、函数均注释其功能、用法、参数说明等。
2.软件项目中如有使用第三方源码、控件、DLL或其它文件均需指明相关名称、版本号等,并事先告之我方,取得我方同意后方可使用。第三方文件或控件不得修改,我方收到程序源码,如当中有第三方文件(或源码)后会用相应第三方文件替换掉原码中的第三方文件。如确需修改第三方文件需经我方确认,并告之修改方法及细节。
3.移交项目源码时应同时移交使用说明书,说明书应包括软件大体使用方法,配置方法、编译方法、环境配置等,确保我方编译成功并布署。
4.移交此程序时必须包括全部源码,不得封装成DLL、EXE、OCX等其它非源码文件移交。不得对源码进行任何形式的加密、汇编等造成难以阅读、修改。
5.本程序使用DELPHI开发,未经我方许可不得在本程序源码中使用汇编语言。
|
|
|
|
|