一、项目背景与技术选型
本陪玩社交系统旨在整合游戏陪玩、语音互动、工会管理及商业变现功能,采用前后端分离架构,支持多端同步(公众号、小程序、H5、PC及打包APP)。后端核心基于ThinkPHP6(TP6)框架,客户移动端使用Uni-app跨平台开发,管理后台基于TH6(ThinkPHP6后台扩展)实现。技术栈涵盖微服务、实时音视频、容器化部署等,确保高并发场景下的稳定性和扩展性。
二、系统架构设计
- 整体架构分层
前端层:Uni-app构建多端应用,适配移动端H5、小程序及打包APP;PC端独立适配。
服务层:TP6处理业务逻辑,Go语言负责高并发的房间状态管理(如语音房成员同步)。
数据层:MySQL存储用户、订单等持久化数据;Redis缓存在线状态、会话及热点数据。
媒体层:集成声网Agora/腾讯云TRTC实现实时语音,SRS媒体服务器转发音频流。
部署层:Docker容器化打包,K8s集群编排,支持弹性扩缩容。 - 核心功能模块技术实现
(1)用户认证与多端登录
TP6的JWT中间件:用户登录后颁发Token,支持微信/手机号快捷登录,多端同步状态。
Uni-app跨端同步:通过OAuth2.0协议统一账号体系,APP端打包后调用原生SDK实现第三方登录。
(2)实时通信与语音房
音视频技术:基于TRTC的低延迟(100-300ms)连麦,集成降噪与回声消除算法。
房间状态管理:Go语言维护房间成员、上麦列表及禁言状态,通过Redis发布订阅同步各端。
聊天室协议:WebSocket处理私信与弹幕,支持多人语音房(最多9人)及礼物特效触发。
(3)订单与支付系统
TP6订单服务:简化下单流程,自动计算路费(按距离模板),状态机驱动订单生命周期。
支付回调:微信/支付宝异步通知验签,TP6事件监听更新订单状态,防止并发覆盖。
虚拟币体系:用户充值后生成流水,打赏时实时扣减并触发礼物特效。
(4)陪玩师入驻与接单
入驻认证:自助提交资料后,TP6任务队列异步审核,技能标签匹配Elasticsearch索引。
派单大厅:基于Redis有序集合(Sorted Set)实现抢单队列,防止超卖。
收益分账:工会自动分成比例通过TP6定时任务结算,提现对接企业付款接口。
(5)社交互动与动态圈子
动态发布:Uni-app上传图文/视频至阿里云OSS,TP6处理内容审核(敏感词过滤+人工)。
互动引擎:Redis缓存点赞/评论数,MySQL最终一致性存储,减轻数据库压力。
(6)管理后台与运营工具
TH6权限管理:RBAC权限控制,分级管理平台、工会及普通管理员。
数据统计:定时任务聚合订单、打赏、房间流量数据,生成ECharts报表。
安全管控:AOP切面记录操作日志,敏感数据加密存储,IP异常访问限流。
三、关键挑战与解决方案
高并发抢单:采用Redis分布式锁+库存扣减Lua脚本,避免超卖。
语音延迟优化:动态调整TRTC码率,客户端弱网时启用FEC前向纠错。
跨端一致性:Uni-app打包后通过JSSDK桥接原生功能,如支付、录音权限。
数据一致性:支付回调引入本地消息表+定时任务补偿,确保最终一致。
四、商业变现与技术结合
虚拟币充值:用户充值后生成钱包流水,打赏时实时扣减,平台赚取汇率差。
房间服务费:特殊房间开通时TP6调用支付接口,按日/月扣费。
广告植入:管理后台配置广告位,前端通过接口动态渲染,统计点击转化。
工会合作:工会入驻后,TP6自动分成结算,支持按比例抽成或固定服务费。
五、部署与运维
Docker化部署:TP6应用打包为镜像,通过K8s管理Pod副本数,应对流量波峰。
数据库优化:MySQL主从分离,分表分库(按用户ID哈希),慢查询日志分析。
监控告警:Prometheus采集业务指标,Grafana展示实时QPS、延迟及错误率。
六、总结
本系统基于TP6+Uni-app构建,充分发挥了PHP快速开发与Go高并发的优势,结合实时音视频技术,实现了游戏陪玩社交场景的闭环。通过微服务化改造和容器化部署,保障了系统的可扩展性与稳定性,为后续功能迭代和流量增长奠定基础。