- 短信:外部短信延迟与送达率问题,可以搭建短信平台,多家渠道做路由和切换分流(短信平台架
- 支付:银行支付与回调延迟,搭建支付中心,对接多支付渠道
- 快递对接:快递服务对接(快递100)
- 外部云存储:云存储文件访问,流量扩容(大家所使用的存储?nfs的架构与事故)
- CDN:外部静态文件访问提速服务(使用过的项目?)

文章插图
2.1 业务中台2.1.1 订单中心1)异步化
场景:
大促期间新增许多需要获取订单状态的服务,比如应对双11而临时增加的数据中台订单大屏展示等
解决:
异步化,并对消息队列调优,多队列分流
问题:
注意异步化引发的乱序问题,一是传输阶段,二是消费阶段
图解:
rabbitmq传输:队列级别顺序保障,单消费者消费一个队列可以严格保障顺序性,需要扩充队列数提
升性能

文章插图
kafka传输:分区级别顺序保障,只能保障投放和传输阶段的顺序性

文章插图
consumer:1对1消费存在性能问题,接收消息后对key做二次分发,放入多个内存队列,开启多线程
消费
2)过期订单
双11抢单是最常见的场景,抢单不支付会占据大批量资源,如商品库存 。如何取消过期订单是架构师必
须面对的问题 。主要有以下几种方案:
扫表实现
原理:
通过定时任务轮询扫描订单表,超时的批量修改状态
优点:
- 实现非常简单
- 大量数据集,对服务器内存消耗大 。
- 数据库频繁查询,订单量大的情况下,IO是瓶颈 。
- 存在延迟,间隔短则耗资源,间隔长则时效性差,两者是一对矛盾 。
- 不易控制,随着定时业务的增多和细化,每个业务都要对订单重复扫描,引发查询浪费
通过DelayQueue,每下一单,放入一个订单元素并实现getDelay()方法,方法返回该元素距离失效还
剩余的时间,当<=0时元素就失效,就可以从队列中获取到 。启用线程池对数据监听,一旦捕获失效订
单,取出之后,调用取消逻辑进行处理 。

文章插图
优点:
- 基于jvm内存,效率高,任务触发时间延迟低 。
- 存在jvm内存中,服务器重启后,数据全部丢失 。
- 依赖代码硬编码,集群扩展麻烦
- 依赖jvm内存,如果订单量过大,无界队列内容扩充,容易出现OOM
- 需要代码实现,多线程处理业务,复杂度较高
- 多线程处理时,数据频繁触发等待和唤醒,多了无谓的竞争
消息队列实现
原理:
设置两个队列,每下一单放一条进延迟队列,设定过期时间 。消息一旦过期,获取并放入工作队列,由
- 睡一觉醒来,左眼内双变成外双是怎么回事?如何变回来?
- 天蝎座是真的会把双鱼憋疯吗?
- 改革后重组的事业单位,早九晚五,双休,工资三千左右,要去吗?
- 双胞胎两个女儿的症状 怀双胞胎的症状有哪些
- 今日/资讯 盘点十大高仿普拉达女双肩包!2022已更新
- 教育“双减”政策下的教培人该何去何从?
- 双眼皮胶水好用吗,用双眼皮胶水有什么注意事项?
- 今日/资讯 盘点十大高仿普拉达双肩包!2022已更新
- 大蛇无双4 大蛇无双修改器怎么用
- 日本队向国际乒联抗议世乒赛女双决赛关键局擦网判罚,该球到底有没有擦网?你怎么看?
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
