Spring Cloud 微服务项目实战
姚秋辰(姚半仙)
PayPal 研发经理
1637 人已学习
立即订阅
登录后,你可以任选4讲全文学习
推荐试读
换一换
15 | 配置中心在微服务中发挥着怎样的作用?
16 | 如何集成 Nacos Config 实现配置项动态刷新?
17 | Sentinel 体系结构:什么是服务容错(降级熔断、流量整形)?
课程目录
已更新 32 讲/共 38 讲
开篇词 (1讲)
开篇词 | 跟着学,你也能成为微服务高手
课前必学 (4讲)
01 | 是什么推动了单体应用到微服务架构的演进?
02 | 微服务全家桶:走进 Spring Cloud 的世界
03 | 初窥门径:我们要搭建一个怎样的微服务实战项目?
04 | 十八般兵器:如何搭建项目所需的开发环境?
Spring Boot 急速落地篇 (2讲)
05 | 牛刀小试:如何搭建优惠券模板服务?
06 | 牛刀小试:如何搭建优惠券计算服务和用户服务?
Spring Cloud 基础篇 (8讲)
07 | Nacos体系架构:什么是服务治理?
08 | 服务治理:Nacos集群环境搭建
09 | 集成 Nacos:如何将服务提供者注册到 Nacos 服务器?
10 | 集成 Nacos:如何通过服务发现机制向服务提供者发起调用?
11 | Loadbalancer 实战:通过自定义负载均衡策略实现金丝雀测试
12 | OpenFeign:服务间调用组件 OpenFeign 是怎么“隔空取物”的?
13 | OpenFeign 实战:如何实现服务间调用功能?
14 | OpenFeign 实战:OpenFeign 组件有哪些高级玩法?
Spring Cloud 进阶篇 (10讲)
15 | 配置中心在微服务中发挥着怎样的作用?
16 | 如何集成 Nacos Config 实现配置项动态刷新?
17 | Sentinel 体系结构:什么是服务容错(降级熔断、流量整形)?
18 | Sentinel 实战:如何实施流量整形与限流策略?
19 | Sentinel 实战:如何为项目添加异常降级方案?
20 | Sentinel 实战:如何接入 Nacos 实现规则持久化?
加餐:说透微服务 | 什么是主链路规划?
21 | Sleuth 体系架构:为什么微服务架构需要链路追踪?
22 | 调用链追踪:集成 Sleuth 和 Zipkin,实现链路打标
23 | 调用链追踪:如何通过 ELK 实现日志检索?
Spring Cloud 高级篇 (7讲)
24 | 为什么微服务架构少不了微服务网关?
25 | 微服务网关:Gateway 中的路由和谓词有何应用?
26 | 微服务网关:如何设置请求转发、跨域和限流规则?
27 | 微服务网关:如何借助 Nacos 实现动态路由规则?
28 | 消息驱动:谁说消息队列只能削峰填谷?
29 | 消息驱动:如何集成 Stream 实现消息驱动?
30 | 消息驱动:如何高效处理 Stream 中的异常?
Spring Cloud 微服务项目实战
15
15
1.0x
00:00/00:00
登录|注册

28 | 消息驱动:谁说消息队列只能削峰填谷?

你好,我是姚秋辰。
说起消息驱动,它可是一个有点年头的老技术了,如今借着微服务架构这股春风可谓是混得春风得意。但凡你去大厂面试,被问到三高系统架构的问题,高低得整两句:消息驱动是如何“削峰填谷”来解决高并发的。
要知道,消息驱动可不仅仅停留在面试环节,它的用武之地也不只局限于“削峰填谷”。今天我就带你了解一下,消息驱动技术在微服务系统中有哪些常用场景。这节课我会基于过去开发过的实际项目,来一一列举各种应用场景,加深你的学习体感。
前面提到了削峰填谷,但我还偏就不从这老掉牙的话题开场,这种“面试宝典”里的经典问题,就是在校生都能答出个一二三来。我这里要为你介绍的第一个消息驱动场景,就是和微服务架构最贴合的“服务间解耦”。

服务间解耦

如果你认为把服务拆分成微服务就叫做服务间解耦,那咱对微服务的认知还停留在第一层。在很多场景中,我们还需要借助消息驱动组件对业务场景做进一步解耦。
举个例子,在我们网购下单完成付款之后,有一系列的后续业务流程会被执行。比如买家短信和邮件通知、IM 和站内信推送、金币和积分结算、卖家端履约流程等等。有时候搞线上活动,还会在付款完成之后触发赠券服务。
我们假设这些业务场景都被拆分成了微服务,从业务完整性的角度来讲,为了实现付款后自动触发完整链路,交易服务的回调接口必须挨个调用我前面提到的各个业务系统。如果未来需要接入新的业务场景,你还得往回调接口里加上一个新的系统集成点。再从从服务容错的角度考虑,你还得兼顾关键场景(如金币 + 积分结算)的失败重试,这些逻辑都掺和到了支付成功的回调接口里。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
划线
笔记
复制
15 | 配置中心在微服务中发挥着怎样的作用?
16 | 如何集成 Nacos Config 实现配置项动态刷新?
17 | Sentinel 体系结构:什么是服务容错(降级熔断、流量整形)?
23 | 调用链追踪:如何通过 ELK 实现日志检索?
28 | 消息驱动:谁说消息队列只能削峰填谷?
29 | 消息驱动:如何集成 Stream 实现消息驱动?
该试读文章来自付费专栏《Spring Cloud 微服务项目实战》,如需阅读全部文章,
请购买文章所属专栏
立即购买
登录 后留言

精选留言(4)

  • 请叫我和尚
    分享一下消息队列在我们团队其中的一些应用:
    ## 延迟业务:
    背景,记录用户的行为,当用户的行为 x s/m/h,未进行下一步行为的时候,我们就需要执行相关策略。
    比如配置策略:当用户进入商品界面 30m 之后未点击购买,就给用户发送这个商品购买 push。
    当用户点击京东 iPhone 13 pro 商品之后,这时候就会发一个延时消息(30m),30m 之后,消费这条消息回溯用户的行为是否点击了购买,如果没有点击购买,就给用户发 push。

    ## 削峰填谷:拿来做业务的兜底,一个信贷业务,用户需要去授信才能拿到额度,但是授信过程中强依赖的外部资方系统出问题了(这时候再去授信肯定会去失败),但是肯定不能损失这一部分用户,这时候就一个开关控制,当依赖的资方系统出问题时,把这时候的授信用户丢进消息队列里,当资方系统恢复之后,开启消费开关,消息队列里授信用户进行授信。 这个方案就可能损失用户的用户体验,比如提示用户授信结果 xx 小时之后出来,但是保证了用户不流失。
    2022-02-16
    1
    4
  • wllq_1223
    电商OMS系统中,订单下载后处理过程涉及的业务比较多,如匹配仓库、匹配快递、扣减库存、打标签、匹配赠品规则、拆单、合单等等,如果从订单下载到处理整个流程同步进行将大大降低订单处理效率,下游的订单处理服务也需要更多的资源。
    订单下载后入系统订单表,发送消息进行转单处理,再发送消息进行系统订单处理,大促期间只需要适当增加订单下载服务就可以扛得住大流量的冲击。
    2022-02-16
    2
  • 快乐的小土豆
    想问下一般都用消息队列做异步通知,而RPC框架同步获取结果吗

    作者回复: 有些rpc框架也支持异步调用,MQ的场景是“可靠消息投递”,用mq送达率比rpc要高

    2022-02-16
  • peter
    请教老师几个问题啊:
    Q1 消息队列怎么实现延迟任务?
        消息队列只能收发消息,不能执行任务啊。是消息队列定时发消息给具体业务来实现的吗?
    Q2 用实时流技术来识别热点数据,一般是怎么做的?用大数据组件吗?比如spark。
    Q3 “还需要借助消息分区等功能降低消息的积压量”,
        消息分区怎么能降低消息积压?积压是因为没有消费;没有消费的话,即使分区也不能降低积压量啊。
    Q4 消息队列的监控一般是怎么做的?消息队列一般自己没有监控软件吧,需要引入额外的监控软件吗?
    Q5 一键开店,是指给某个具体商户开店吗?如果是指具体商户的话,一般没多少商品啊。比如小米,算是产品比较多的啦,但也就几十种商品,SKU也不会到几十万的规模啊。一般商家的商品更是非常有限。
    Q6 能否再出一章来讲解一下总结部分的几个内容?
      包括“事务性消息”、“死信队列”、“一致性哈希Routing”,以及pulsa。总结部分提到的这几个部分感觉也非常重要。

    作者回复: Q1:延迟消息后面会讲到
    Q2:stream流分析rpc或网关日志,各个大厂有不同做法
    Q3:消息分区相当于分库分表同理
    Q4:有的消息组件有插件可以支持,有的cloud版都有云服务商提供了配置参数做预警
    Q5:零售行业SKU数量多,线下卖场

    2022-02-16
收起评论
4
返回
顶部