今天分享实现中台系统中的一些设计思考
系统目标
- 搭建商品中心系统和服务,支持多个业务线产品的统一存储和输出
- 数据进去中台系统到可用,延迟不超过5分钟
- 满足接收消息qps超过2000
系统设计
- 系统分三个模块,分别负责数据落地,数据搜索和数据详情
- 使用 ES 作为搜索引擎,使用 Redis 作为数据缓存系统
遇到的一些问题
- 多个业务系统在中台流程不能相互影响
- 考虑依赖方的接口性能和承受能力
- 控制处理延时
- 分表生成中台唯一主键
- 变更事件过来时不一定能获取到所需的数据
解决方案
- 给不同业务线分配不同的消息topic,避免相互影响
- 接收处进行限流设置,对应全量等流量尖峰有控制
- 依赖接口保证各自的相应,控制自己的请求频率和批量数量
- 自实现id生成器(分布式锁+id表)
- 接收消息后延迟执行,便于收集到完整数据
一些心得
- 系统设计中需要进行限速,防止突发高峰影响系统整体运转
- 系统中对于应用重启、崩溃等都进行考虑,防止数据丢失
- 各个地方建立全量机制保持数据一致
- 建立数据补偿机制,如下游查不到出发数据获取流程