0、引言
传统的拍卖受限于地点和人数的限制,在线拍卖已经成为人们拍卖的主要形式。通过在线拍卖可以让人们不受空间和时间的选择进行,节约了大家的时间,提高了拍卖效率。目前虽然市面上有许多的拍卖系统,但这些系统大多采用的是传统的单体技术架构,前后端不能分离,前后端耦合系统的扩展性不强,不能对系统的模块根据用户的使用频率进行灵活的部署。此时在用户量多的情况下很容易出现卡顿甚至崩溃死机的情况。因此采用微服务架构可以很好的解决上述问题。在微服务架构下通过将系统按照功能模块进行拆分成不同的微服务, 每个微服务可以单独部署。服务之间可以通过Feign等技术实现调用。本系统通过使用基于SpringCloud的微服务框架,可以有效的解决代码耦合度高、后期系统可扩展性差、系统并发度不高、不能灵活部署等问题
[1]。
1、技术路线
拍卖小程序以springcloud为软件基础,遵循JAVAEE规范,以前后端分离的开发模式实现新建功能的构建。系统前端采用业界流行、社区活跃的vue作为开发框架、前后端对接采用主流的restful接口对接方式实现对接。系统后端在处理数据的时候引入缓存机制,对于系统访问热点数据进行缓存,这样能有效的减少系统IO的开支从而在同等硬件条件下,实现最大用户承载量以及最快的响应速度和最好的用户体验。
2、技术架构
拍卖小程序以springcloud为基础,搭建以微服务形式为基础的架构体系,整个系统分为数据存储微服务、缓存读写微服务、分布式文件读写微服务以及第三方对接接口微服务。
3、
功能模块设计
竞买人可通过关注公众号进入拍卖小程序,无需登录即可阅览拍卖会,针对有意向参与的拍卖会,根据标的物类别不同,浏览板块不同,每个板块对于首次参与的标的物类别需根据需要填写公司资料及上传资质文件,点击进入详情页弹出竞拍须知,点击变为已阅,资质文件上传成功后待管理员审核,资料需重新上传将收到公众号推送修改提示,直到审核通过后,推送审核通过提示;审核通过后,页面跳转付款界面,竞买人缴纳报名费,报名成功后获取到拍卖文件链接,竞买人需自行打印拍卖文件签字盖章寄回,系统提示引导竞买人及时寄出拍卖文件,最后,竞买人将保证金转账银行回单上传,等待后台确认,确认保证金到账后获取随机竞拍号码,等待开拍。
拍卖会开始前30分钟、前2分钟收到拍卖会开始提醒,拍卖会开始后按照正常竞价流程进行拍卖,在自由竞价阶段,竞买人可以在倒计时内加价,在限时竞价阶段,每一位竞买人的出价都会使得限时竞价重新倒数,加价可按照阶梯进行加价,直到场上没有竞买人出价,限时竞价结束,拍卖标的最终价格高于保留价,标的成交,未高于保留价,标的物流拍。
竞买人界面显示是否拍卖成交,未竞买成功的竞买人显示:欢迎下次参拍;竞买成功的竞买人显示:恭喜X(竞买号)以XX(价格)成交,推送成交价款、佣金、评估费等账号信息(根据不同标的确认不同拍卖文件版本),并引导竞买人在小程序自行下载拍卖成交确认书。
3.1小程序端功能
小程序端实现了首页、banner广告、拍卖专场、拍卖会详情,标的物详情,公告、我的拍卖会、我的保证金、我的竞拍、我的关注等功能。
首页主要为展示拍卖专场和历史专场,拍卖专场为待开始,进行中的拍卖会,历史专场为已结束的拍卖会。
拍卖专场及拍卖会详情主要是展示拍卖的所有详细信息。顶部显示拍卖会的主图,动态实时显示当前拍卖价格。
主要用列表的形式展示公告的列表,列表上展示公告的主要信息,包括公告的标题,时间、发布部门等。点击公告进去才展示公告的主要详细信息。
3.2竞买人端功能
竞买人端实现了个人中心、实名认证、绑定手机号、类别中心、拍卖中心、消息中心等功能。
实名认证入口设置在个人中心,点击实名认证可以进入实名界面。输入用户姓名、身份证号、上传身份证人像面、上传身份证国徽面等相关信息或进行企业认证。
认证类别,需要用户选择自己是属于哪个拍卖类别的用户,然后提交审核。审核通过之后才能参与相关领域的拍卖。
拍卖中心以列表的形式展示自己参与竞拍和参与报名的拍卖会记录。
3.3拍卖小程序后台功能
拍卖小程序后台实现了用户管理、权限管理、角色管理、广告管理、资料审核管理、保证金管理、标的类别管理、公告管理、拍卖会管理、统计报表、黑名单管理等功能,其中主要功能如下:
保证金管理记录每个用户提交的保证金,每次提交生成一次保证金记录。支持按拍卖会名称、拍品名称、姓名、状态、提交时间作为查询条件,其中提交时间查询条件用时间控件进行填写,防止用户输入错误的时间格式。
拍卖会管理提供了拍卖师、竞拍人等角色,提供拍卖会的增删改查功能,并提供拍卖会名称、类型、状态、创建时间作为查询条件,其中创建时间查询条件用时间控件进行填写,防止用户输入错误的时间格式。拍卖会列表以表格分页形式进行展示,展示字段包括拍卖会名称、所属公告、拍卖会类型、状态、开始时间、创建时间。
消息提醒:拍卖会即将开始的时候,系统会提前5分钟在右下角弹出提示框提示管理员拍卖会即将开始。
统计报表展示出所有的拍卖会信息,针对拍卖会场数、报名人数、溢价率、出价次数进行多维度统计。
4、
系统建设难点
首先如何将拍卖小程序的功能合理拆分成多个微服务是一个挑战,服务划分过细可能导致服务间调用复杂,管理难度增加。划分过粗则无法充分发挥微服务架构的优势。在本次项目实践中,我们拆分为以下三个核心微服务:拍卖会管理、报名管理、搜索服务。
其次微服务之间需要高效的通信机制,如RESTful API。如何设计合理的接口,确保服务间的数据一致性和事务性,是技术实现的关键,需要特别注意注册、登录,竞价拍卖、拍卖查询等接口大量用户使用的场景。拍卖小程序需要快速响应用户的操作请求,特别是在最后出价的几分钟内,需要减少服务间的调用延迟,提高系统的响应速度,最好能达到毫秒级别的响应。其次,设计时钟的同步也是一大难点,服务器与手机间的时间误差不能大于1秒。
拍卖小程序需要集成多个外部系统,如短信平台、OA系统、物流系统等。如何实现与外部系统的无缝集成,确保数据的安全性和一致性,也是技术难点之一。
拍卖小程序中包含大量的交易数据和用户信息,需要考虑可扩展的数据库架构和网络架构,确保数据的高效读写和存储,本项目中我们选择了读写分离和负载均衡的可扩展架构设计实现。
拍卖小程序涉及敏感的用户信息和交易数据的安全问题。如何采用加密技术、访问控制等手段保护数据不被泄露或篡改,如何设计合理的交易机制,防止欺诈行为的发生等,另外根据项目特别,还通过了安全等保二级。