百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
G

go-disruptor

> 编程语言
开源

LMAX Disruptor 的 Go 语言版本。

1.5K stars0 点赞1 次浏览
访问官网GitHub

工具介绍

LMAX Disruptor 的 Go 语言版本。

概述----------------------------- 这是将 LMAX Disruptor 移植到 Go 编程语言的一个实现。它保留了 Disruptor 的精髓和精神,使用了相同的底层抽象和概念,但不保留名称或 API。在现代的桌面硬件上,它可以每秒向一个 goroutine 发送数亿条消息—是的,数亿条—。

一旦初始化并运行,Disruptor 的主要设计考虑之一是以恒定速率处理消息。它采用了两种主要技术来实现这一点。首先,它避免使用互相竞争的锁,从而干扰并最终阻止扩展。其次,Disruptor 不产生垃圾。它通过在环形缓冲区上预先分配连续空间来实现这一点。通过完全避免垃圾,可以几乎完全避免垃圾收集和停止世界的应用程序暂停。

在 Go 中,通道(chan)的当前实现维护了发送、接收和 len 操作周围的互斥锁。结果是,它的最大无争议吞吐量为每秒 20-30 万条消息,与 Disruptor 相比要慢一数量级。同样的通道,在 OS 线程之间竞争时,每秒只能推送大约 5-7 万条消息,而 Disruptor 则继续推送至少一数量级以上的消息,比同类竞争通道要快。

上述示例比典型的通道实现更为复杂。它展示了一个包含 4 个独立消费者的完整流程,分为 2 个阶段。去掉所有注释、实例化和额外的解释性内容后,代码变得非常简洁。事实上,给定的"发布"操作只需要三个指令 - 预留一个槽、更新环形缓冲区和"提交"预留的序列范围。在消费者端,有一个"for"循环来处理应用程序中的所有输入项。同样,这并不像通道那样简洁(也不像通道那样灵活),但

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Go

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言