【开题答辩实录分享】以《车联网位置信息管理软件》为例进行答辩实录分享
大家好,我是韩立。
写代码、跑算法、做产品,从 Java、PHP、Python 到 Golang、小程序、安卓,全栈都玩;带项目、讲答辩、做文档,也懂降重技巧。
这些年一直在帮同学定制系统、梳理论文、模拟开题,积累了不少“避坑”经验。
新学期开始,很多人卡在选题:想要新颖,又怕做不完。接下来我会持续分享一批“好上手且有亮点”的选题思路和完整开题答辩案例,给你参考,也给你灵感。关注我,毕业设计不再头秃!
功能模块
- 权限控制:区分超级管理员、管理员、普通用户三类角色,超级管理员可审核管理员与用户加入申请、管理使用权限及增删车联网位置信息;管理员可进行基础车辆位置信息管理、审核普通用户部分申请;普通用户可查看个人关联车辆位置信息、提交信息修改申请。
- 业务管理:核心实现车联网位置信息的查看、新增、删除、修改,适配高速公路电子收费站、停车场管理等需车牌认证场景,助力车辆自动识别与管理。
【开题陈述】
答辩学生:各位老师好,我是 H 同学。本次课题是“基于微服务的车联网位置信息管理软件”。系统面向园区/高速/停车场等多租户场景,提供车辆自动识别、实时定位、轨迹回放与分级权限管控。前端采用微信小程序+JSP管理后台;
后端以 Spring Cloud Alibaba 微服务架构拆分“用户-车辆-位置-权限-日志”五大领域,持久层用 MyBatis-Plus + MySQL,缓存用 Redis,网关采用 Spring Cloud Gateway + JWT 统一鉴权,配置与灰度用 Nacos,链路追踪用 Sleuth+Zipkin,容器化部署到 Docker-Compose。
主要功能:① 多租户注册隔离;② 微信无感登录+人脸核身;③ 车牌识别+GIS 实时坐标写入;④ 轨迹增量回放与 geo-fence 越界告警;⑤ 超级管理员动态权限、按钮级细粒度授权。下面请各位老师提问。
——答辩开始——
评委老师:微服务拆分依据是什么?请用 DDD 语言描述你的“限界上下文”及聚合根。
答辩学生:我将领域拆成“身份上下文”“车产业务上下文”“位置监控上下文”三个 BC。身份上下文聚合根是 User,包含角色集合;车产业务上下文聚合根是 Vehicle,聚合车牌、车型、所属租户;位置监控上下文聚合根是 Track,内含坐标列表与 Geo-Fence 规则。跨上下文通过事件总线异步解耦。
评委老师:识别率 95% 的情况下,每日 10 万车次,如何防止因重识别导致轨迹断链?
答辩学生:采用“车牌+车身颜色+地感线圈编号”三元组生成临时 VehicleSessionId,写入 Redis 并设置 30 min TTL;同一 Session 内坐标追加写,避免重复调用导致的轨迹碎片。
评委老师:高并发写坐标时,MySQL 行锁热点如何消除?
答辩学生:先写本地日志队列(Log4j2 Async+Disruptor),批量 500 条刷 Redis Stream,再启异步线程每秒聚合写入 MySQL,按“租户+日期”做分表,打散热点。
评委老师:若 Redis 节点宕机,轨迹上报线程池打满,你如何保证不丢点?
答辩学生:采用“双写”策略:坐标先写本地磁盘环形缓冲区(大小 10 MB),后台线程监听 Redis 恢复事件,重放缓冲;同时开启 Kafka 镜像队列做冷备,做到至少一次交付。
评委老师:JWT 过期 15 min,但园区作业可能持续 2 h,如何既安全又避免频繁弹窗?
答辩学生:使用“滑动刷新+Refresh Token”机制:AccessToken 保持 15 min, RefreshToken 绑定用户+IP+UA 存 Redis 并设 2 h,每 10 min 用 RefreshToken 静默换钥,旧 Token 加入黑名单队列,保证无缝续签。
评委老师:Spring Cloud Gateway 自定义过滤器里,如何防止 JWT 伪造(kid 篡改)?
答辩学生:网关启动时从 Nacos 拉取 JWK 公钥集合缓存为 Map<kid, PublicKey>;请求 Token 的 kid 若不在本地缓存,直接拒绝;同时启用 JJWT 的算法白名单,只接受 RS256,杜绝算法混淆攻击。
评委老师:轨迹回放需要 30 天历史,单表 5000 万行,如何做到毫秒级 Geo-BoundingBox 查询?
答辩学生:MySQL 8.0 新建空间列 coordinate POINT SRID 4326,用 SPATIAL INDEX;查询先用 BBOX 粗筛,再精确计算距离;冷热分层:7 天热数据放 SSD,30 天冷数据放 SATA+ZSTD 压缩,通过定时任务 pt-online-schema-change 迁移。
评委老师:灰度发布时,你想把 20% 流量切换到 v1.2.0 的车辆服务,如何确保 Zipkin traceId 不中断?
答辩学生:在 Gateway 的灰度过滤器里,根据用户标签打标 X-Gray:1 并写入 Baggage,下游服务通过 MDC 继承 traceId;同时配置 Sleuth 的 spring.sleuth.baggage.correlation-fields=X-Gray,保证链路染色完整。
评委老师:Docker-Compose 单机部署只是开发环境,生产上你打算怎么上 K8s?
答辩学生:已写好 Helm Chart,Deployment 加 HPA 根据 CPU 50% 弹性伸缩;ConfigMap 挂载 Nacos 地址;用 Istio 做金丝雀,ArgoCD 做 GitOps,计划毕业前在实验室 3 节点 K8s 完成压测。
评委老师:最后系统验收指标是什么?
答辩学生:① 车牌识别端到端 < 300 ms;② 坐标上报 5 k QPS 时 P99 < 100 ms;③ 30 天轨迹 BBOX 查询 < 300 ms;④ 灰度发布零中断;⑤ 压测 12 h 无内存泄漏。以上指标在 2025 年 5 月前由第三方性能报告给出。
——评委总结——
H 同学对业务模型、高并发、高可用、安全、空间索引及云原生灰度均有量化指标与具体技术落地,体现出较好的系统设计能力;下一步需提前准备压测脚本与故障演练,确保指标可验证。开题逻辑严谨,深度符合本科优秀水平,同意开题,期待中期演示。
以上是H同学的毕业设计答辩过程,如果你现在还没有参加答辩,还是开题阶段,已经选好了题目不知道怎么写开题报告,可以下面找找有没有自己符合自己题目的开题报告内容,列表中的开题报告都是往届真实的开题报告,可发送使用或参考。