并发系统设计中的数据异构和数据闭环

数据异构

订单分库分表一般按照订单ID进行,如果要查询某个用户的订单列表,需要聚合多个表的数据后才能返回,会导致订单表的读性能降低。此时需要对订单表异构,异构一套用户订单表,按照用户ID进行分库分表。另外还需要考虑对历史订单数据进行归档处理,以提升服务的性能和稳定性。而有些数据异构的意义不大,如库存价格,可以考虑异步加载,活着合并请求。

数据闭环

实现数据闭环,如商品详情页,因为数据来源太多,影响服务稳定性,最好的办法是把使用到的数据进行异构存储,形成数据闭环,基本步骤:

1.数据异构
通过消息队列接受数据变更,然后原子化存储到合适的存储引擎当中,如redis或持久化KV存储

2.数据聚合
这一步是可选的,数据异构的目的是把数据从多个数据源拿到,数据聚合的目的是把这些数据做聚合,这样前段就可以一个调用拿到所有的数据,步骤一般存储在kv中

3.前端展示
前端通过一次活着少量的几次调用拿到所需要的数据

这种方式好处就是做数据的闭环,任何依赖的系统出了问题,还能正常工作,更新会有积压,但是不影响前端展示

另外,此处如果一次需要多个数据,那么可以考虑使用Ha shTag机制将相关的数据聚合到一个实例,如在展示商品呢详情页时候,需要商品基本信息 p:productId:和商品参数
d:productId:,此时就可以使用冒号中间的productid作为数据分片的key,这样相同的productId的商品相关数据就在一个实例内

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值