1、立项背景和目标
这是一个专业的围棋(棋类)赛事直播平台,用于管理比赛、记录棋谱、实时直播对局,并支持多角色协作。本系统作为中国围棋协会赛事直播系统,旨在为协会提供一套标准化、专业化的赛事直播解决方案。
2、软件功能和核心模块的介绍
本系统围绕围棋赛事直播的核心需求,构建了六大业务模块。赛事管理模块负责创建和管理比赛,设置裁判与负责人,支持与中国围棋协会官方系统对接;对局管理模块提供对局信息录入、Excel批量导入、棋手信息维护及用时规则设置等功能;棋谱直播模块是系统核心,支持SGF格式棋谱的实时录入与同步,通过Redis缓存实现观众端秒级刷新,同时记录双方用时和读秒信息;用户管理模块支持多角色权限体系,并提供临时摆棋账号的批量创建与自动过期机制,便于现场工作人员快速上手;时间记录模块精确追踪每一手棋的用时,支持撤销回退操作;数据同步模块通过定时任务自动将比赛棋谱同步至中国围棋协会官方平台,实现数据互通与归档。各模块协同配合,形成从赛事创建、现场直播到数据归档的完整业务闭环。
3、业务流程
创建赛事 → 导入/添加对局 → 分配摆棋账号 → 摆棋员登录 → 开始比赛 → 实时录入棋谱(SGF) → 结束比赛 → 记录结果
1、整体架构和设计思路
本系统采用前后端分离的分层架构,后端由 live-api(API网关层)和 live-core(核心服务层)两大模块组成。API网关层基于 Spring Boot 2.5 构建,集成 Spring Security + JWT 实现安全认证与权限控制,通过 Feign 调用核心服务;核心服务层承载全部业务逻辑,使用 MyBatis-Plus 操作 MySQL 数据库,通过 Druid 连接池管理数据库连接。系统使用 Redis 作为分布式缓存,实现棋谱的毫秒级实时同步,保障直播时效性;文件存储采用 阿里云OSS,用于存放棋手照片和赛事图片。定时任务基于 Spring Scheduler 实现,每日自动将棋谱同步至中国围棋协会官方平台。开发过程中使用 Hutool 和 Fastjson2 等工具库提升效率,Lombok 简化代码编写。整体技术选型成熟稳定,兼顾开发效率与系统性能,能够满足大型围棋赛事的实时直播需求。
2、我负责的模块
我主要负责赛事管理模块负责创建和管理比赛,设置裁判与负责人,支持与中国围棋协会官方系统对接;对局管理模块提供对局信息录入、Excel批量导入、棋手信息维护及用时规则设置等功能。
3、遇到的难点和解决方案
(1)临时摆棋账号的唯一性与生命周期管理
问题:每场比赛需要为现场摆棋员创建临时账号,账号需满足:8位数字格式、全局唯一、比赛结束后自动失效。当前随机生成存在碰撞风险。
解决方案:在生成临时用户名时增加数据库唯一性校验,采用"生成-校验-重试"机制,最多重试 N 次确保不重复。同时为临时账号设置过期时间字段(temTime),登录时校验是否过期,过期账号自动拒绝登录。
(2)与中国围棋协会官方平台的数据对接
问题:比赛棋谱需要同步到围棋协会官方平台,两个系统数据结构不同,且需保证同步的可靠性和幂等性。
解决方案:在赛事和对局表中增加 systemNo、systemListNo 字段,建立本地数据与官方平台的映射关系。通过定时任务(每日凌晨 1 点)扫描未同步棋谱(syncStatus=0),批量调用官方 API 同步,成功后更新同步状态。采用分批请求(每批 20 条)避免大数据量超时,失败自动记录日志便于人工排查。