本项目源自 七米课堂微服务实战课程 的电商评价系统,在保留原始 CQRS 架构思想的基础上,进行了深度重构与功能增强,使其具备生产环境需求功能。
-
C 端(用户)
- 发表评价(图文/视频、多维评分、标签)
- 高性能查询商品评价列表
- 查看个人评价
-
B 端(商家)
- 查看本店评价、回复用户、申诉恶意评价
-
O 端(运营)
- 审核评价与申诉、管理状态、添加运营备注
-
Job 服务
- 消费 Canal Binlog 事件 → 构建三表合一 ES 宽表
- 保障数据最终一致性
| 维度 | 原课程项目 | 本项目重构增强 |
|---|---|---|
| ES 数据模型 | 无 | ✅ 设计并落地 三表合一宽表(评价 + 回复 + 申诉) |
| ES 查询能力 | 仅店铺ID查询 | ✅ 支持 多条件过滤(SPU、评价状态、时间范围、热点关键词)、全文检索、深度分页(search_after)、综合排序、聚合 |
| CDC 同步链路 | 简陋逻辑 | ✅ 通过 Canal + Kafka + Job 实现 近实时、可靠、幂等 的 MySQL → ES 同步 |
| 中文搜索 | 未处理 | ✅ 配置 ik 分词器,支持评价内容中文全文检索 |
| 高并发优化 | 基础缓存 | ✅ Redis + singleflight 防击穿 |
- 将
review_info、review_reply_info、review_appeal_info聚合为单个 ES 文档; - 宽表包含评价内容、评分、媒体、商家回复、申诉状态、审核意见等全量信息;
- 使用 ik_max_word 分词器支持中文检索。
- 支持组合条件:SPU、店铺、评分区间、标签、时间范围、审核状态;
- 深度分页:
search_after替代from/size,万级分页无性能衰减; - 排序:默认优先展示有图、视频或商家回复的高参考度评价。也可以选择时间、评分、回复数等因素排序;
- 性能优化:
Bool Query+Filter Context,避免相关性计算,提升缓存命中; - 高并发保护:
singleflight合并请求 + Redis 缓存。
- 微服务:Kratos v2.7.0
- 通信:Protobuf + gRPC(内部) / HTTP(外部)
- 写存储:MySQL
- 读存储:Elasticsearch
- 缓存:Redis + singleflight
- 数据同步:Canal → Kafka → Job
- 服务治理:Consul
- 工程化:Wire、GORM Gen、protoc-gen-validate
- 🔹
biz-review-service— 评价服务端 - 🔹
biz-review-api— 评价服务端 API 定义 - 🔹
biz-review-c— 用户端 - 🔹
biz-review-b— 商家端 - 🔹
biz-review-o— 运营端 - 🔹
biz-review-job— 评价服务端同步任务
