支付系统研究 - 高可用订单架构
作者:互联网
一、日百W级别订单系统丢单原因分析
1、订单查询核心逻辑:不使用读写分离方式,避免从库同步延迟造异常问题;不使用缓存,避免缓存同步延迟问题
2、订单补偿不要粗暴使用消息队列方式,避免中间件异常导致的订单丢失问题;
3、接受消息时一定要有重试机制
二、日W级订单系统架构
主要职责:创建订单和支付完成修改订单
1、写数据库时,数据库事务粒度不要过大,避免锁表,关注慢sql; 不要把更新缓存和写消息队列放到DB事务中
2、关注数据异构性能和稳定性:尤其网络抖动的情况,可能影响用户体验
3、关注订单的幂等性,避免计费等错误,影响后续操作流程
缺点:
流量主要集中在主DB上,需要分库分表拆分多个主DB
新的问题:
1、热点数据存在,导致存在数据倾斜问题,引发提早扩容
2、下单服务耦合过重:多集群架构部署模式,也能实现业务快速变化
痛点问题
1、下单服务处理接单慢
2、数据库压力大
3、数据异构延迟高
4、缓存数据质量差
优化方案
1下单服务处理接单慢:单独接单服务接单,使用订单引擎和订单管理处理订单业务逻辑
2、数据库压力大:使用双写和数据补偿方式,处理缓存
3、数据异构延迟高
4、缓存数据质量差:使用缓存过期方式控制数据量
1、幂等性:插入任务失败,重新执行当前任务
2、并行调度:根据配置决定是否串行或并行执行
3、任务状态机:检测失败任务,重试;当超过一定次数,告警和人工干预
4、保证实时查询
标签:缓存,架构,可用,数据库,DB,订单,接单,延迟 来源: https://www.cnblogs.com/binfirechen/p/16182727.html