文章更新时间:2023-09-19 18:00
组件简介
维护者 | LMAX-Exchange 组织 | 许可证类型 | Apache-2.0 |
首次发布 | 2013 年 1 月 3 日 | 最新发布时间 | 2021 年 12 月 31 日 |
GitHub Star | 16361 | GitHub Fork | 3863 |
依赖包 | 1,430 | 依赖存储库 | 8,540 |
Disruptor是一个高性能的异步处理框架,是一个轻量的Java消息服务JMS, 能够在无锁的情况下实现队列的并发操作。
官网:https://lmax-exchange.github.io/disruptor/
官方仓库:https://github.com/LMAX-Exchange/disruptor
参考链接:
https://packages.ecosyste.ms/registries/repo1.maven.org/packages/com.lmax:disruptor
https://mvnrepository.com/artifact/com.lmax/disruptor
组件健康度
技术健康度 | Disruptor 的技术优势在于它能够充分利用硬件的特性,避免缓存失效和锁竞争,从而提高性能和吞吐量。它也有一些缺点,比如它需要预先分配固定大小的内存空间,不能动态扩展;它需要自己管理事件的生命周期,不能使用垃圾回收机制;它需要编写复杂的逻辑来处理不同的消费者之间的依赖关系。总体来说,Disruptor 是一个成熟和稳定的技术方案,但也有一定的使用门槛和限制。 |
社区健康度 | Disruptor 的源码托管在 GitHub 上,目前有 4.8k 个星标和 1.3k 个 fork。它也有一个 Google Group 讨论组,目前有 1.6k 个成员和 1.5k 个话题。它还受到了一些知名的技术博客和媒体的关注和评价 。可以看出,Disruptor 有一个活跃和繁荣的社区,能够为用户提供足够的支持和反馈。 |
更新和维护频率 | Disruptor 的最新版本是 4.0.0.RC1,发布于 2021 年 12 月 31 日。它的更新频率并不很高。根据其发布历史,它大约每年会发布两到三个版本,主要是修复一些 bug 和增加一些小功能。它的维护者主要是 LMAX 的员工,他们会定期回复用户的问题和建议。可以认为,Disruptor 是一个相对稳定和可靠的项目,不需要经常更新和维护。 |
兼容性 | Disruptor 是一个纯 Java 的库,只依赖于 Java 标准库。它支持 Java 8 及以上版本。它也有一个 .NET 的移植版本,但更新较慢,最新版本是 4.0.0.RC1。它没有其他的兼容性问题,可以在任何支持 Java 的平台上运行。 |
文档和支持 | Disruptor 有一个完善的文档网站,包括用户指南、API 文档、常见问题、开发指南等内容。它也有一个技术论文,详细介绍了其设计原理和性能测试结果。它还有一些演示视频 ,介绍了其使用方法和应用场景。除此之外,用户还可以通过 Google Group 讨论组或 GitHub Issues来寻求帮助和反馈意见。 |
com.lmax:disruptor 是一个健康度较高的组件,它具有优秀的技术性能、活跃的社区、稳定的更新、良好的兼容性和丰富的文档。它适合用于高并发和低延迟的场景,但也需要注意其使用难度和局限性。
参考链接:
https://zhuanlan.zhihu.com/p/229338771
https://lmax-exchange.github.io/disruptor/
https://www.baeldung.com/lmax-disruptor-concurrency
组件许可证解读
Apache License 2.0 是一种开源软件许可证,广泛用于授权开源项目和代码。Apache License 2.0 允许用户自由地使用、修改和分发受许可的软件,而无需支付版权费用或专利费用。它鼓励开发者共享他们的代码,并保护用户的权利。以下是该许可证的一些重要特点:
- 代码使用权:用户可以自由地使用、复制、修改、合并、发布、分发和销售受许可软件。
- 版权声明:用户必须在所有源代码副本中保留原始的版权声明、许可证声明和免责声明。
- 修改代码:如果用户对代码进行了修改,需要清楚标明哪些部分发生了变化,并不能暗示原作者同意这些修改。
- 商标使用:Apache License 2.0 并未授予使用原软件的任何商标或名称的权利。
- 专利许可:该许可证授予了在使用、修改或分发受许可软件时相关专利的非独占许可。这意味着如果用户授权其他人使用该软件,相关专利许可也会传递给接收方。
- 再许可:用户可以将受 Apache License 2.0 许可的代码作为一部分整合到其它开源项目中,并使用不同的许可证授权整个项目。但是,需要在代码中显式地说明使用了 Apache License 2.0 许可的部分。
需要注意的是,Apache License 2.0 并不保证软件没有缺陷或不稳定性,使用该软件的风险由用户自行承担。
许可证原文链接:https://github.com/LMAX-Exchange/disruptor/blob/master/LICENCE.txt
组件漏洞版本及修复方案
暂无
同类型可替代组件
- Agrona:Agrona 是一个提供高性能数据结构和实用方法的库,它支持无锁和机械辛普森算法(Mechanical Sympathy)的编程模式。它也是 Aeron 项目的基础,Aeron 是一个高效的可靠 UDP 单播、多播和 IPC 消息传输库。官网:https://github.com/real-logic/agrona
- JCTools:JCTools 是一个提供 Java 并发原语(concurrent primitives)的库,它包括一些队列、映射、集合等数据结构,以及一些原子操作、缓存行填充(cache line padding)等技术。它的目标是提供更好的性能和更少的内存占用。官网:https://github.com/JCTools/JCTools
- MPMCQueue.h:MPMCQueue.h 是一个用 C++11 编写的有界多生产者多消费者并发队列,它使用了一个环形缓冲区来实现无锁操作。它可以在任何支持 C++11 的编译器上编译和运行。官网:https://github.com/rigtorp/MPMCQueue