消息队列高手课
李玥
美团高级技术专家
52199 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
进阶篇 (21讲)
消息队列高手课
15
15
1.0x
00:00/00:00
登录|注册

28 | 答疑解惑(二):我的100元哪儿去了?

无需外部系统
选举方法:投票选举
依赖ZooKeeper
选举方法:抢占模式
Controller指定Leader
未来消息队列的发展方向
Pulsar采用存储计算分离的设计
大多数消息队列未采用存储计算分离的设计
RocketMQ/Dledger
Kafka
D. f(n, v, a):如果账户n当前的流水号等于v,那么给账户的余额加a元,并将流水号加一
C. f(n, b, a):如果账户n当前的余额为b元,那就将账户的余额更新为n元
B. f(n, a):将账户n的余额更新为a元
A. f(n, a):给账户n转入a元
Pulsar的存储计算分离架构
Kafka和RocketMQ的选举机制
并发调用情况下的幂等性
答疑解惑(二):我的100元哪儿去了?

该思维导图由 AI 生成,仅供参考

你好,我是李玥。
今天这节课,是我们的“消息队列高手课第二阶段进阶篇的最后一节课,照例,我们在每一阶段的最后,安排一节课进行热点问题的答疑,针对同学们遇到的一些共同的问题,统一来进行详细的解答。

1. 我的 100 元哪儿去了?聊聊并发调用情况下的幂等性

在期中测试中,有这样一道题。
如果可以保证以下这些操作的原子性,哪些操作在并发调用的情况下具备幂等性?
A. f(n, a):给账户 n 转入 a 元
B. f(n, a):将账户 n 的余额更新为 a 元
C. f(n, b, a):如果账户 n 当前的余额为 b 元,那就将账户的余额更新为 n 元
D. f(n, v, a):如果账户 n 当前的流水号等于 v,那么给账户的余额加 a 元,并将流水号加一
这道题的正确答案是 D。很多同学都留言提问,选项 B 中,将账户 n 的余额更新为 a 元,这个操作不具备幂等性吗?
如果单单只是考虑这个操作,执行一次和执行多次,对系统的影响是一样的,账户 n 的余额都是 a 元。所以,这个操作确实是幂等的。但请你注意审题,我们的题目中说的是:“哪些操作在并发调用的情况下具备幂等性?”在并发调用的情况下,我们再来看一下 B 这个选项的操作是否还具备幂等性。
假设,账户余额 100 元,依次执行 2 次转账:
将账户余额设为 200 元;
将账户余额设为 300 元;
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

消息队列高手课第二阶段进阶篇的热点问题引发了深入讨论。文章首先探讨了在并发调用情况下的幂等性问题,以及Kafka和RocketMQ的选举机制。通过转账操作的例子,强调了在并发调用情况下幂等性的重要性。同时,介绍了Kafka和RocketMQ的选举机制,突出了它们各自的特点和适用性。此外,文章还探讨了消息队列的发展方向,特别是Pulsar存储计算分离的架构,以及未来消息队列的发展趋势。通过对现有流计算平台和消息队列的功能和不足进行对比,强调了存储计算分离设计的合理性和未来发展的可能性。总的来说,本文通过深入的技术讨论,为对消息队列和并发操作感兴趣的读者提供了有价值的参考和启发。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《消息队列高手课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • Geek_72a3d3
    老师,spring里面集成的kafka客户端和官方kafka客户端您更推荐哪个,spring里面集成的kafka客户端您认为怎么样?常用么

    作者回复: 你是说spring-kafka么?这个只是在Spring中对kafka-clients做了一些封装而已,使用的就是kafka的官方客户端。

    2019-10-11
    1
  • 陶源
    并发调用情况的第6条是不是应该为 “没收到‘将账户余额设为200元’这个请求的成功响应”

    作者回复: 这个地方确实是笔误,我联系编辑小姐姐修改一下。感谢。

    2019-10-10
  • jack
    老师,之前您介绍kafka在zookeeper中的节点,似乎没有/controller这个临时节点啊?

    作者回复: 是的,之前那张图中只有主要的节点,并不是Kafka在ZK中的全部节点

    2019-10-02
  • A9
    请问老师后面会再讲到序列化相关的知识点吗

    作者回复: 在实践篇,我们还有有半节课专门来讲序列化的最佳实践。

    2019-09-29
  • leslie
    Pulsar的计算性是真正的减负:就是觉得如果只是单纯的其它MQ那么做有点Cache的意思了,而且这个Cache还和No sql用的都是内存缓存。 刘文浩老师当时提的哪个我当时觉得最不一样的就在于提及的是CPU缓存,老师说的Pulsar的计算性是其它所不具备的不一样的特性-故而上堂课的留言我会提及既然有了Cpu干嘛要有GPU:任何工具都有两面性吧,如果不充分发挥特性异中发挥其特性,是很难在未来走下去的。 今年的十一长假基本上要和老师的课程一起度过了:一路走来学习的很辛苦,但是收获的喜悦替代了身体的辛苦;期待老师的案例篇吧:实战中度过十一长假,期待老师十一长假的更新;谢谢老师的分享,愿老师节日快乐。
    2019-09-28
    1
    3
  • Jxin
    针对这个答案。有个疑问,消息的顺序消费也是属于幂等性的范涛吗?
    2019-11-10
    2
  • Bachue Zhou
    其实 Pulsar 的架构并非终极形态,真正的终极形态就是把数据完全放在云存储上,完全不需要用户自己的来管理,中间的 Bookkeeper 就应该是个将数据上传到云存储的中间件而已,也应该是无状态的。
    2024-01-31归属地:上海
  • 慌张而黑糖
    C. f(n, b, a):如果账户 n 当前的余额为 b 元,那就将账户的余额更新为 n 元,这里是更新为a元吧
    2024-01-12归属地:北京
  • shangyu
    老师,c和d感觉都行啊,看不出来c有什么问题(´;︵;`)
    2021-02-09
    2
  • Jen🌛
    期待案例篇 老师节日快乐
    2019-09-30
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部