2013-11-20 4 views
0

Я провел некоторое исследование с отцом-разрушителем, и есть одна вещь, которую я не могу обернуть вокруг головы.Каким образом дистрибутив LMAX используется для фондового рынка?

Есть производители, которые предоставляют запись для кольцевого буфера. Существует ringbuffer, в основном фиксированный, но бесконечный массив. Есть потребители (в основном спящие потоки), обрабатывающие записи из буфера обмена.

Я пытаюсь рассказать о том, как паттерн disruptor можно использовать в реальном сценарии развития фондового рынка.

Обычно у вас будет книга заказов, содержащая все заказы. Как я вижу, производитель получит новый заказ от брокера. Производитель размещает заказ в кольцевом буфере. После того, как заказ был помещен в ringbuffer, потребитель получает заказ и перекрестно проверяет его с помощью bookbook.

Теперь вот часть, в которой у меня возникли проблемы с пониманием преимущества. Если бы было несколько потребителей, чего вы хотите для масштабируемой системы, как может быть несколько потребителей, отдающих распоряжения?

Книга заказа должна быть заблокирована при доступе потребителя для обеспечения целостности. То, что я ищу, - это ответ на этот вопрос и приблизительное представление о том, как этот механизм может получить выгоду от этого механизма.

У LMAX есть свой собственный порядок, соответствующий двигателю, поэтому должно быть что-то, что я пропускаю.

Спасибо

ответ

1

У них есть один потребитель, который обрабатывает заказы самостоятельно. остальные потребители действуют на выходе этого процессора - такие вещи, как возврат ответов, запись журналов, запись в базу данных и т. д. Обработка фактического заказа происходит в одном потоке, который является единственным потоком для доступа к книге заказов и поэтому не нужен чтобы заблокировать его.

заявляют, что могут использовать до 6 миллионов заказов в секунду.

+1

Точно. Самая важная вещь в архитектуре LMAX (как они описали ее публично!) Заключается в том, что существует один поток, выполняющий фактическое согласование порядка, которое может связываться с потоками ввода и вывода без блокировки. Это означает, что, хотя работа выполняется одним потоком, она может работать с огромной скоростью. Этот подход не масштабируется с дополнительными ядрами, но это не имеет значения, поскольку он достаточно быстро выполняется на одном ядре. –

+0

Благодарим вас за ответ Радай и Том Андерсон. Но тогда возникает вопрос: – user3014924

+0

Благодарим вас за ответ Радай и Том Андерсон. Основываясь на ваших ответах, я начинаю думать, что Disruptor следует рассматривать как средство для структурного действия действий неконкурентным, но парализованным способом. Что такое Disruptor, это патерн для быстрого согласования заказов. Я прав? – user3014924