摘" 要:针对当下人们倾向线上交流的现状,提出设计一款基于小程序的社交平台,以满足移动端随时随地进行多样化的社交需求。系统使用SpringBoot框架开发数据服务端;使用Shrio进行访问权限的控制、JSON Web Token和SHA-256哈希算法对用户身份信息进行加密;使用MySQL数据库进行关系型数据库管理、Redis缓存存储用户Token;使用集成GoEasy的API实现用户一对一实时通信、系统消息实时推送的功能。结果表明:在模拟用户数为100、1 000和10 000时出现了0%的异常率,系统每秒吞吐量分别为98.5、495.8、621.0;在模拟用户数为20 000时出现了0.22%的异常率,系统每秒吞吐量达到653.5。总的来说,各项性能指标表现良好,可以处理响应10 000以上用户的请求。
关键词:社交平台;小程序;SpringBoot;吞吐量
中图分类号:TP311 文献标识码:A 文章编号:2096-4706(2024)22-0146-06
Design and Implementation of Social Platform Based on Mini Program
Abstract: Aiming at the current situation that people tend to communicate online, it is proposed to design a social platform based on the mini program to meet the diversified social needs of mobile terminals anytime and anywhere. The system uses the SpringBoot framework to develop the data server, and uses Shrio to control access rights, JSON Web Token and SHA-256 Secure Hash algorithm to encrypt user identity information. It uses MySQL database for relational database management, uses Redis cache to store user Token, and uses the API that integrates with GoEasy to achieve the functions of one-to-one real-time communication of users and real-time push of system messages. The results show that the abnormal rate is 0% when the number of simulated users is 100, 1 000, and 10 000, the system throughput per second is 98.5, 495.8, 621.0 respectively. When the number of simulated users is 20 000, the abnormal rate is 0.22%, and the system throughput reaches 653.5 per second. In general, the performance of various performance indicators is good, and it can handle requests from more than 10 000 users.
Keywords: social platform; mini program; SpringBoot; throughput
0" 引" 言
随着移动互联网的发展与普及,社交媒体已逐渐融入人们的日常生活中,成为不可或缺的一部分。相比传统的社交方式,人们更倾向于在线上进行社交、分享情感、获取信息、放松心情和娱乐。经过小范围的调查,对小程序接受和使用程度最多的主要集中在年轻人,特别是90后、00后[1]。同时,他们都存在情感丰富的一面,热衷于分享自己的日常生活、工作体验、学习经历、情感体验等。他们希望可以畅所欲言,分享自己的喜怒哀乐,分享自己对生活的感悟、对爱情的向往、对未来的期许,得到别人的喜欢与关注,找到心灵的寄托。他们也希望可以通过文字、图片、视频等形式展示个性与才华,结识志同道合的朋友,拓展人际关系。他们也希望可以提出疑问,得到回复,解决问题;可以互相学习,共同成长。然而,现有的社交平台存在诸多问题,如商业化广告严重、内容侵权、负面信息传播、隐私泄露、信息过载和用户成瘾等。这些问题严重影响了用户的社交体验,甚至对用户的心理健康和生活造成负面影响。
本产品是一款基于微信小程序的以文字文本、图片、视频为创作分享形式的社交类平台,设计初衷是为用户提供一个纯粹的、安全的、健康的、有趣的、无广告的社交空间,满足用户的日常分享、情感表达和多样化的社交需求。同时,小程序作为一种新型的Web互联网应用。它具有轻量级、易传播、易使用、用户基数大、开发成本低等特点,已经受到了广大用户的青睐[2]。
因此,设计开发一款基于小程序的社交平台可以满足用户在移动端随时随地进行多样化的社交需求,可以为用户提供更加便捷的社交体验。
1" 系统总体设计方案
基于小程序的社交平台主要由小程序客户端和Java数据服务端这两个子系统所组成的。这两个系统之间通过HTTP协议以JSON数据格式进行数据交互,共同实现了平台的各项功能[3]。
为了确保项目能够成功实施并达到预期目标,对基于小程序的社交平台进行详细的可行性分析。可行性分析包括市场可行性、经济可行性、技术可行性、社会可行性等。根据可行性分析的统计结果,结合用户对社交平台期待的社交功能,基于小程序的社交平台设计了文章模块、文章操作模块、话题模块、发布模块、关注模块、私信模块、用户模块、登录模块、系统设置模块这九个模块。系统顶层需求结构具体如图1所示。
1.1系统的逻辑架构
基于微信小程序的社交平台的整体逻辑架构分为数据访问Model层、控制Controller层、业务Service层、展示View层和持久Dao层五层架构。同时,在整个系统架构中,整合Shiro框架实现安全控制,确保用户身份的合法性和操作权限的合理性,全面保障系统的安全稳定运行[4]。系统整体逻辑架构图如图2所示。
1.2 系统的物理架构
基于微信小程序的社交平台的物理架构主要有:服务端、用户端、服务器、数据中心。其中,服务端是基于Spring Boot的数据服务端[5];用户端是客户端微信小程序;服务器是华为云服务器集群;数据中心是MySQL集群。系统物理架构图如图3所示。
2" 系统部分功能设计
2.1 登录模块的实现
基于微信小程序的社交平台的用户登录方式以简洁、快速为主,调用微信平台的开放API实现微信授权一键登录,让用户以简单的方式进入社交平台浏览信息[6]。微信授权一键登录流程如图4所示。
2.2 文章模块的实现
文章模块是整个平台的核心模块,在首页以卡片化形式进行展示。
文章展示的具体内容包括:文章主要内容(如:内容、主题、发布时间等)、用户的个人信息、关注情况、点赞情况、收藏情况、转发情况、评论情况等。
其中,文章的内容可以分为三类:一类是视频内容;一类是图片内容;另一类是文本创作。视频图片等资源通过阿里云OSS云存储服务存储。
文章首页是用户登录成功后进入的第一个页面,是小程序社交平台的核心页面。文章首页用于展示个性化文章内容提供给用户浏览阅读。文章首页如图5所示。
小程序通过顶部导航栏将文章模块分为三个小分区,分别是:
1)最新区。展示最新发布的文章,文章按照发布时间降序排序。
2)推荐区。展示个性化推荐的文章,文章按照发布时间降序排序。
3)关注区。展示已关注用户的文章,文章按照发布时间降序排序。
2.3" 评论功能的实现
评论功能是文章的核心功能。本平台的文章评论支持多级评论,也称为嵌套评论或层级评论,允许用户对评论进行回复,形成树状结构的评论。
用户发表评论、回复时,数据服务端会统计评论的数量,用于文章的展示。文章被评论时,系统自动消息通知作者评论详情。用户评论被回复时,系统自动消息通知被回复用户,用户可以点击查看详情。
评论区以列表形式展示用户的评论,每条评论包括用户的头像、昵称、评论内容、发布时间等。评论区提供评论输入框,允许用户输入评论内容。
用户可以针对某条评论进行回复,形成评论链。回复的内容会缩进显示在对应评论的下方。评论区页面如图6所示。
2.4 私信模块的实现
系统的私信模块功能是通过快速集成GoEasy的免费API实现的。GoEasy具有集成简单、性能卓越、成本低、跨平台支持等优势,支持海量用户同时在线,每秒千万级消息实时必达。GoEasy的实现原理主要基于WebSocket协议[7]。
本社交平台允许用户之间的一对一私信。用户可以在首页点击用户头像进入用户个人空间页面。用户可以点击用户个人空间页的私信按钮进行一对一实时聊天。用户也可以在粉丝列表、关注列表、聊天会话列表选择私信对象进行一对一实时聊天。用户私信聊天页面如图7所示。
3" 系统测试
在系统测试方面,采取了多种方法来确保系统的质量、性能和稳定性。
1)使用JUnit4框架[8]进行单元测试,针对代码中的最小单元(如方法、类)进行测试。
2)使用Swagger[9]工具进行接口测试,验证接口的参数、返回值、异常处理等方面是否符合预期。
3)使用JMeter工具进行性能压力测试,模拟多用户并发访问系统,测试系统的响应时间、吞吐量、资源利用率等性能指标。
3.1" 性能压力测试工具简介
Apache JMeter[10]是一款功能强大的性能测试工具,它由Apache Software Foundation开发,并可用于测试Web应用程序或API的性能。JMeter支持多种协议,如HTTP、HTTPS、SOAP、FTP、LDAP等,并允许用户模拟高负载以测试应用程序的稳定性和响应时间。
通过JMeter的性能测试,可以直接对系统性能的一些关键指标进行分析,如:吞吐量、响应时间、异常率等,进而评估系统在各种应用场景的运行情况、业务处理能力。
以下是一些关键指标的解释:
1)吞吐量。指的是系统每秒能处理的请求数量,反映了系统的处理能力和容量。
2)响应时间。指用户发送请求到系统返回响应所需的时间。
3)异常率。指的是一定时间内,系统发生的错误数量总请求数的比值。
3.2" 系统性能压力测试案例
3.2.1" 模拟100个用户
使用JMeter模拟100个用户在同一时间段内访问系统,对关键性能指标进行分析,得到相关测试数据表(如表1所示),以及响应时间的折线图(如图8所示)。
3.2.2" 模拟1 000个用户
使用JMeter模拟1 000个用户在同一时间段内访问系统,对关键性能指标进行分析,得到相关测试数据表(如表2所示),以及响应时间的折线图(如图9所示)。
3.2.3" 模拟10 000个用户
使用JMeter模拟10 000个用户在同一时间段内访问系统,对关键性能指标进行分析,得到相关测试数据表(如表3所示),以及响应时间的折线图(如图10所示)。
3.2.4" 模拟20 000个用户
使用JMeter模拟20 000个用户在同一时间段内访问系统,对关键性能指标进行分析,得到相关测试数据表(如表4所示),以及响应时间的折线图(如图11所示)。
3.3 性能测试总结
通过模拟用户数从10到20 000对系统进行性能增压测试,系统最终在模拟用户数为20 000时出现了0.22%的异常率。此时,系统的每秒吞吐量达到653.5。总的来说,该系统在各项性能指标上表现良好,可以很好处理响应10 000以上用户的请求。
4" 系统运维
在软件开发过程中,小程序作为用户直接交互的前端,其用户体验和功能实现依赖于后端服务的稳定性和性能。因此,小程序和Java后端的运维工作直接影响到软件产品的质量和用户体验[11]。
系统的运维工作主要包括以下几个方面:
1)准备部署环境。准备云服务器,安装Java运行环境,安装必要的数据库和其他服务依赖。
2)上传应用程序。使用Maven构建工具打包Java应用程序为可执行的JAR包,上传云服务器。
3)配置云服务器。配置服务器的防火墙、安全组、域名等,确保应用程序需要的端口开放,配置Java应用程序运行的环境变量[12]。
4)Docker部署。使用Docker轻量化部署,隔绝生产环境,生成镜像文件进行保存[13]。
5)发布上线。提交小程序代码,审核通过了,选择全量发布(所有用户都能用新版本)或灰度发布(先让一部分用户试用新版本)。
5" 结" 论
本论文详细分析了基于小程序的社交平台的发展现状和用户需求,深入探讨了社交平台的设计理念和技术架构,并实现了九大功能模块。测试结果显示:各项性能指标表现良好,能够为用户提供良好的社交体验,能够满足用户在移动端多样化的社交需求。在未来的研究中,将深入研究用户在社交平台上的行为模式,包括信息分享、互动频率、内容偏好等,更好地理解用户需求,优化推荐算法,提升用户满意度,优化界面交互体验。
参考文献:
[1] 智惠.基于社交媒体的用户信息行为研究 [D].太原:山西大学,2018.
[2] 孙路玲.微信小程序的场景应用研究 [D].长沙:湖南师范大学,2021.
[3] 袁堂青,亓婧.基于微信小程序的开发与研究 [J].网络安全技术与应用,2020(4):66-67.
[4] 丁洁.基于Shiro的Web应用安全框架设计研究 [J].信息与电脑:理论版,2018(13):38-39.
[5] 杨开振.深入浅出Spring Boot 2.x [M].北京:人民邮电出版社,2018.
[6] 李代立,陈榕.WebSocket在Web实时通信领域的研究 [J].电脑知识与技术,2010,6(28):7923-7925+7935.
[7] 陈伟.微信小程序开发实战 [M].北京:人民邮电出版社,2017.
[8] 左刚.基于JUnit框架的接口测试系统研究与实现 [D].北京:中国科学院大学(工程管理与信息技术学院),2013.
[9] SmartBear. Swagger Open Source Tools Questions [EB/OL].[2024-02-17].https://community.smartbear.com/category/swagger-os-community/discussions/swaggerostools.
[10] ABBAS R,SULTAN Z,BHATTI N S. Comparative Study of Load Testing Tools: Apache JMeter, HP LoadRunner, Microsoft Visual Studio (TFS), Siege [J].Sukkur IBA Journal of Computing and Mathematical Sciences,2017,1(2):102-108.
[11] 李鹏.IT运维之道 [M].北京:人民邮电出版社,2015.
[12] 韩晓光.系统运维全面解析 [M].北京:电子工业出版社,2015.
[13] 张荻,孙蓉.计算机软件开发中Docker技术应用分析 [J].产业创新研究,2023(12):145-147.