消息队列高手课
李玥
京东零售技术架构部资深架构师
立即订阅
8426 人已学习
课程目录
已完结 41 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (2讲)
开篇词 | 优秀的程序员,你的技术栈中不能只有“增删改查”
免费
预习 | 怎样更好地学习这门课?
基础篇 (8讲)
01 | 为什么需要消息队列?
02 | 该如何选择消息队列?
03 | 消息模型:主题和队列有什么区别?
04 | 如何利用事务消息实现分布式事务?
05 | 如何确保消息不会丢失?
06 | 如何处理消费过程中的重复消息?
07 | 消息积压了该如何处理?
08 | 答疑解惑(一) : 网关如何接收服务端的秒杀结果?
进阶篇 (21讲)
09 | 学习开源代码该如何入手?
10 | 如何使用异步设计提升系统性能?
11 | 如何实现高性能的异步网络传输?
12 | 序列化与反序列化:如何通过网络传输结构化的数据?
13 | 传输协议:应用程序之间对话的语言
14 | 内存管理:如何避免内存溢出和频繁的垃圾回收?
加餐 | JMQ的Broker是如何异步处理消息的?
15 | Kafka如何实现高性能IO?
16 | 缓存策略:如何使用缓存来减少磁盘IO?
17 | 如何正确使用锁保护共享数据,协调异步线程?
18 | 如何用硬件同步原语(CAS)替代锁?
19 | 数据压缩:时间换空间的游戏
20 | RocketMQ Producer源码分析:消息生产的实现过程
21 | Kafka Consumer源码分析:消息消费的实现过程
22 | Kafka和RocketMQ的消息复制实现的差异点在哪?
23 | RocketMQ客户端如何在集群中找到正确的节点?
24 | Kafka的协调服务ZooKeeper:实现分布式系统的“瑞士军刀”
25 | RocketMQ与Kafka中如何实现事务?
26 | MQTT协议:如何支持海量的在线IoT设备?
27 | Pulsar的存储计算分离设计:全新的消息队列设计思路
28 | 答疑解惑(二):我的100元哪儿去了?
案例篇 (7讲)
29 | 流计算与消息(一):通过Flink理解流计算的原理
30 | 流计算与消息(二):在流计算中使用Kafka链接计算任务
31 | 动手实现一个简单的RPC框架(一):原理和程序的结构
32 | 动手实现一个简单的RPC框架(二):通信与序列化
33 | 动手实现一个简单的RPC框架(三):客户端
34 | 动手实现一个简单的RPC框架(四):服务端
35 | 答疑解惑(三):主流消息队列都是如何存储消息的?
测试篇 (2讲)
期中测试丨10个消息队列热点问题自测
免费
期末测试 | 消息队列100分试卷等你来挑战!
结束语 (1讲)
结束语 | 程序员如何构建知识体系?
消息队列高手课
登录|注册

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

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

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/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《消息队列高手课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(8)

  • leslie
    Pulsar的计算性是真正的减负:就是觉得如果只是单纯的其它MQ那么做有点Cache的意思了,而且这个Cache还和No sql用的都是内存缓存。
         刘文浩老师当时提的哪个我当时觉得最不一样的就在于提及的是CPU缓存,老师说的Pulsar的计算性是其它所不具备的不一样的特性-故而上堂课的留言我会提及既然有了Cpu干嘛要有GPU:任何工具都有两面性吧,如果不充分发挥特性异中发挥其特性,是很难在未来走下去的。
         今年的十一长假基本上要和老师的课程一起度过了:一路走来学习的很辛苦,但是收获的喜悦替代了身体的辛苦;期待老师的案例篇吧:实战中度过十一长假,期待老师十一长假的更新;谢谢老师的分享,愿老师节日快乐。
    2019-09-28
    2
  • Jxin
    针对这个答案。有个疑问,消息的顺序消费也是属于幂等性的范涛吗?
    2019-11-10
  • Geek_72a3d3
    老师,spring里面集成的kafka客户端和官方kafka客户端您更推荐哪个,spring里面集成的kafka客户端您认为怎么样?常用么

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

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

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

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

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

    2019-10-02
  • Jen🌛
    期待案例篇 老师节日快乐
    2019-09-30
  • Better me
    提前祝老师节日快乐啊,假期有时间必须把课程相关源码过一下
    2019-09-30
  • A9
    请问老师后面会再讲到序列化相关的知识点吗

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

    2019-09-29
收起评论
8
返回
顶部