20 | 在分布式环境中,队列、栅栏和STM该如何实现?
晁岳攀
该思维导图由 AI 生成,仅供参考
你好,我是鸟窝。
上一讲,我已经带你认识了基于 etcd 实现的 Leader 选举、互斥锁和读写锁,今天,我们来学习下基于 etcd 的分布式队列、栅栏和 STM。
只要你学过计算机算法和数据结构相关的知识, 队列这种数据结构你一定不陌生,它是一种先进先出的类型,有出队(dequeue)和入队(enqueue)两种操作。在第 12 讲中,我专门讲到了一种叫做 lock-free 的队列。队列在单机的应用程序中常常使用,但是在分布式环境中,多节点如何并发地执行入队和出队的操作呢?这一讲,我会带你认识一下基于 etcd 实现的分布式队列。
除此之外,我还会讲用分布式栅栏编排一组分布式节点同时执行的方法,以及简化多个 key 的操作并且提供事务功能的 STM(Software Transactional Memory,软件事务内存)。
分布式队列和优先级队列
前一讲我也讲到,我们并不是从零开始实现一个分布式队列,而是站在 etcd 的肩膀上,利用 etcd 提供的功能实现分布式队列。
etcd 集群的可用性由 etcd 集群的维护者来保证,我们不用担心网络分区、节点宕机等问题。我们可以把这些通通交给 etcd 的运维人员,把我们自己的关注点放在使用上。
下面,我们就来了解下 etcd 提供的分布式队列。etcd 通过 github.com/coreos/etcd/contrib/recipes 包提供了分布式队列这种数据结构。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了如何在分布式环境中利用etcd实现队列、栅栏和STM。作者首先介绍了基于etcd的分布式队列和优先级队列的实现方法,展示了在多个节点间并发执行入队和出队操作的方式。其次,文章介绍了etcd提供的分布式栅栏和计数型栅栏,用于协调一组节点的并发操作。最后,作者提到了在使用分布式并发原语时需要考虑可用性、数据一致性和性能损耗等问题。通过具体的代码示例和实际应用场景,本文深入浅出地介绍了在分布式环境中实现队列、栅栏和STM的方法,为读者提供了宝贵的技术参考。文章内容涵盖了分布式系统中常见的并发控制问题,为读者提供了实用的解决方案。文章还提到了etcd提供的STM,通过STM可以实现分布式事务操作,保证一组操作要么全部成功,要么全部失败。文章最后提到了一些思考题,鼓励读者进行实际测试和思考。整体而言,本文内容丰富,涵盖了分布式系统中的关键技术,对于需要在分布式环境中进行并发控制的开发人员具有重要参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Go 并发编程实战课》,新⼈⾸单¥59
《Go 并发编程实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(11)
- 最新
- 精选
- answer宫打卡,坚持看完了,慢慢吸收!
作者回复: 👍🏻👍🏻👍🏻
2021-03-186 - 无名氏想请教下老师这个STM事务能达到什么隔离级别?
作者回复: etcd stm支持四种隔离级别,在创建stm可以指定
2022-03-191 - Emetcd 这么猛吗,一个 k-v 有这么多并发原语,不是一个单纯的 kv 啊
作者回复: 是的,用好它会解决很多问题
2023-12-27归属地:北京 - CrazyCodes打卡第一遍
作者回复: 赞,继续
2023-11-23归属地:北京 - DayDayUp在地铁上打卡,感动一下自己😂
作者回复: 太棒了,赞一个👍🏻
2022-06-26 - gitxuzan刷了第三遍了,每次都有不一样的收获
作者回复: 👍🏻👍🏻👍🏻
2021-10-26 - myrfy感觉是包装了一层最基础的乐观锁,离分布式事务应该还差不少吧2020-11-254
- jack终于看完了,感觉还得再看几遍 消化消化。2021-04-201
- Kepler算分布式事务吧,毕竟操作的数据可能来自不同etcd 节点2020-12-111
- Jamey报了这节课真是收获满满,虽然只有20几节,但是节节干货,感觉自己对并发的认知又提高了。2021-10-29
收起评论