Почему архитектура разрушителя lmax использует 2 разрушителя?

В «дизайне архитектуры разрушителя lmax» показано, что они принимают входные данные и помещают их в очередь во входном разрушителе, и есть несколько обработчиков событий, таких как ведение журнала, несортировка, бизнес-логика, а после этого это ставит его в очередь на выходной разрушитель, а выходной разрушитель имеет Маршаллинг, ведение журнала и т. д. обработчики событий.

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

Поправьте меня, если я неправильно понял это.


person Uttam Suthar    schedule 07.05.2019    source источник


Ответы (1)


В статье есть потенциально несколько нарушителей вывода.

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

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

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

person Slugart    schedule 03.02.2021