交易系统的设计原则

一、高并发的设计原则

  • 无状态:应用无状态,配置文件有状态。例如通过不同的配置文件来连接不同的数据库;
  • 拆分:一般按照功能模块进行拆分,这个要按照环境进行权衡,这也是一种隔离。拆分的几个情况:
  1. 系统维度:按照系统功能/业务拆分,比如:商品系统,购物车,结算,订单系统等。
  2. 功能维度:对系统进行功能拆分,比如,优惠券系统可以拆分为后台优惠券创建、领劵系统、用卷系统等。
  3. 读写维度:根据读写比例进行拆分;读系统可以用缓存提升性能,写的量大时,可以考虑分库分表。
  4. AOP维度:根据访问特征,按照AOP进行拆分,比如,商品详情可以分为CDN、页面渲染系统;CDN就是一个AOP系统。
  5. 模块维度:按照基础和代码维护特征进行拆分。
  • 服务化:首先,判断单体服务还是集群服务,其次服务分组/隔离,后期要考虑限流和白名单。
  • 消息队列:用来解耦一些不需要同步的,或者订阅一些系统关心的变化;注意:消息失败,或者重复接收的场景。
  • 缓存:缓存可以提高系统的性能。
  • 并发化:改串行为并行,通过并发化来提高系统的性能。

二、高可用原则

  • 降级:

         1、开关集中化降级,

         2、可降级的多级服务,

         3、开关前置化,

         4、业务优先级降级

  • 限流:目的是防止恶意请求流量,恶意攻击、或者防止流量超出系统峰值。
  • 切流量:

         1、DNS: 切换机房入口;

         2、HttpsDNS:主要是APP场景,客户端分配好流量入口;

         3、LVS/HaProoxy:切换故障的Nginx接入层;

         4、Nginx:切换故障的应用层

  • 可回滚:例如事务回滚、代码回滚等

三、业务设计原则

  • 防重设计:例如重复提交,下单重复扣减库存;解决方案:对单个用户限流、防重 key、防重表。
  • 幂等性设计:业务中重复消息消费时进行幂等处理。
  • 状态与状态机:设计交易系统会存在正向状态和逆向状态等,正向和逆向状态应该根据系统的特征来考虑是否分离存储。状态设计时应有状态轨迹,方便跟踪和回溯订单。
  • 后台系统操作反馈:修改某些内容想看最终效果,设计后台要考虑效果可预览、可反馈。
  • 后台系统审批化:对于重要的后台功能需要设计审批流程。例如,修改价格,并对操作日志进行记录,保证可追溯、可审计。
  • 文档和注释:系统没有文档和注释,完全人传人。后来接手的人完全不敢动。
  • 备份:备份可以方便留档,出错也方便恢复。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值