Go 并发编程实战课
晁岳攀(鸟窝)
前微博技术专家,知名微服务框架 rpcx 作者
25635 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 22 讲
Go 并发编程实战课
15
15
1.0x
00:00/00:00
登录|注册

20 | 在分布式环境中,队列、栅栏和STM该如何实现?

Delete方法
Receive方法
Put方法
Get方法
STM接口
apply函数
Leave方法
Enter方法
Wait方法
Release方法
Hold方法
Dequeue方法
Enqueue方法
Dequeue方法
Enqueue方法
NewQueue方法
示例代码
STM的使用方法
etcd的事务操作
DoubleBarrier
Barrier
优先级队列
基于etcd的分布式队列
STM (Software Transactional Memory)
分布式栅栏
分布式队列
在分布式环境中,队列、栅栏和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
立即购买
登录 后留言

全部留言(11)

  • 最新
  • 精选
  • answer宫
    打卡,坚持看完了,慢慢吸收!

    作者回复: 👍🏻👍🏻👍🏻

    2021-03-18
    6
  • 无名氏
    想请教下老师这个STM事务能达到什么隔离级别?

    作者回复: etcd stm支持四种隔离级别,在创建stm可以指定

    2022-03-19
    1
  • Em
    etcd 这么猛吗,一个 k-v 有这么多并发原语,不是一个单纯的 kv 啊

    作者回复: 是的,用好它会解决很多问题

    2023-12-27归属地:北京
  • CrazyCodes
    打卡第一遍

    作者回复: 赞,继续

    2023-11-23归属地:北京
  • DayDayUp
    在地铁上打卡,感动一下自己😂

    作者回复: 太棒了,赞一个👍🏻

    2022-06-26
  • gitxuzan
    刷了第三遍了,每次都有不一样的收获

    作者回复: 👍🏻👍🏻👍🏻

    2021-10-26
  • myrfy
    感觉是包装了一层最基础的乐观锁,离分布式事务应该还差不少吧
    2020-11-25
    4
  • jack
    终于看完了,感觉还得再看几遍 消化消化。
    2021-04-20
    1
  • Kepler
    算分布式事务吧,毕竟操作的数据可能来自不同etcd 节点
    2020-12-11
    1
  • Jamey
    报了这节课真是收获满满,虽然只有20几节,但是节节干货,感觉自己对并发的认知又提高了。
    2021-10-29
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部