问题标签 [lmax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
architecture - Disruptor 日志实现
在Martin Fowler 对 LMAX-disruptor 架构的描述中,他说:
Journaler 的工作是以持久的形式存储所有事件,以便在出现任何问题时可以重播它们。LMAX 不为此使用数据库,仅使用文件系统。他们将事件流式传输到磁盘上。
我很好奇基于文件系统的事件日志在实践中的实现是什么样的。以下答案说它被写入“原始文件”,但我对可能为生产系统实现的实际细节感兴趣。它真的是一个包含不断附加的结构化日志的原始文本文件吗?还是某种二进制格式?系统的这个组件是否有任何关键的设计决策?
rxjs - 中频交易系统的颠覆者与反应式架构
我正在尝试为我正在研究的中频交易系统选择合适的架构。目前,我从 Web Socket 或 Rest 接收消息并在那里处理它们。有时它包括 IO 操作(即额外的休息请求),所以它工作非常缓慢,我想所有其他消息都在 Web Socket 客户端的实现中得到缓冲。这种幼稚的方法看起来不太可扩展。
我一直在阅读处理交易消息的成熟架构,目前,我的选择已缩小到 Disruptor 和 Reactive 编程。我想征求您的意见,哪个是更好的选择。具体来说,我担心两种情况:
- 消息处理程序之间的逻辑依赖关系。当我连接到特定交易所时,我需要接收余额和未结订单,然后才能处理交易消息并根据它们下订单。在我看来,响应式是处理这种需要流量控制的情况的更好方法。Disruptor 有问题吗?
- 长时间运行的消息处理程序。消息处理程序应该尽可能快(不要阻止以下消息),但是如果我需要发出一个休息请求来创建一个订单作为消息处理程序的一部分,那么正确的方法是什么?
event-handling - LMAX Disruptor - 维护事件的顺序
我有一个从各种文件加载时间序列数据的应用程序。应用程序为每个文件打开一个线程以并行加载数据。文件中的记录是有序的,但我需要向应用程序的其余部分提供一个提要,以保持整体事件的顺序。
这是否可以使用破坏者来实现,例如多个生产者一种消费者类型的设计来维护事件的顺序?
我目前正在使用阻塞集合和排序列表对每个阻塞集合的头部进行排序,但这会消耗大量内存,我很想看看其他人是否使用不同的架构实现了类似的设计。
谢谢
java - 如何将列表推送到事件类中的 lmax 破坏者
我需要从 mongodb 存储和获取大量数据,所以我要求使用 lmax 中断器接收和存储数据我已经花了几天时间寻找关于 lmax github 帐户的简单教程,但我不太了解如何将我的特殊lmax 干扰器机制轮内的数据
java - 如何使用来自我的 hashmap lmax 中断器的数据来完成 ringbuffer
实际上,在阅读并使用了一个简单的破坏性示例之后,我找不到如何使用来自我的 hashmap 的数据完成我的环形缓冲区,这些数据已经由 eventHandler 、翻译器或哪个组件的数据完成?
java - LMAX Disruptor Producer 在消费者完成读取之前错误地环绕 + 覆盖
我最近被介绍到 LMAX Disruptor 并决定试一试。感谢开发人员,设置快速且轻松。但我认为如果有人可以帮助我解决这个问题,我会遇到问题。
问题: 有人告诉我,当生产者发布事件时,它应该阻塞,直到消费者有机会在环绕之前检索它。我在消费者端有一个序列屏障,我可以确认如果生产者没有发布数据,消费者的 waitFor 调用将阻塞。但是,生产者似乎不受任何监管,只会环绕并覆盖环形缓冲区中未处理的数据。
我有一个生产者作为在单独线程上运行的可运行对象。
我有一个消费者在主线程上运行。
最后,我像这样运行代码:
java - lmax 中断器是一个很好的架构选择,其中有几个消费者都执行相同的任务并依赖于一些本地缓存?
我的用例是这样的 - 产生了几个事件并将其分派到线程池中。每个事件都是单独处理的,以后的某些协调不需要处理的输出。(因此,一个线程不需要等待其他线程)每个线程执行相同的任务但具有不同的事件。每个线程都依赖于本地缓存中的一些静态维护数据。(比如说一个并发的哈希图)。
由于缓存中的哈希映射无论如何都必须锁定/解锁,带有环形缓冲区的 lmax 破坏器是一个不错的架构选择吗?
disruptor-pattern - LMAX Distruptor 分区和加入批处理
所以目前我有一个带有阻塞队列的 Executor 实现,具体的实现就像,我有每个请求的项目列表,我将它们划分为分区,然后计算每个分区,最后将它们连接起来以获得最终列表。
如何在 LMAX 中实现它?我看到一旦我有分区并将它们推入 RingBuffer,每个分区都被视为单独的项目,所以我自定义加入它们。就像是,
有干净的方法吗?我专门查看了https://github.com/LMAX-Exchange/disruptor/tree/master/src/test/java/com/lmax/disruptor/example和 KeyedBatching,但它们似乎在一个线程上进行批处理和执行。
目前对我来说,每个分区占用大约 200 毫秒,我想并行执行它们。
任何帮助是极大的赞赏。
java - LMAX 的颠覆者。如何定义多个EventHandlerGroup?
我想用 multi-EventHandleGroup 处理不同的事件?我找不到那个例子。谢谢......这是代码:
我想添加另一个事件,我想用另一个 EventHandleGroup 来处理它,例如:
java - JFR 显示 Lmax-Disruptor 引擎内的 CPU 利用率很高
在我们的应用程序中,我们使用 LMAX-Distuptor 来推送事件。它显示 Distuptor 代码正在执行一些密集的 CPU 操作,只是为了从序列数组中计算最小序列,这会占用大部分 CPU。单击下面的 URL 以获取 JFR 热线程快照。
https://screenshot.net/ez5zztv
我们使用的环形缓冲区很大,2^16。我们使用 PhasedBackoffWaitStrategy 作为等待策略。
请就如何优化这一点提出您的建议,以避免这种高 CPU 利用率。