Как использовать разрушитель с несколькими типами сообщенийJAVA

Программисты JAVA общаются здесь
Anonymous
Как использовать разрушитель с несколькими типами сообщений

Сообщение Anonymous »

Моя система имеет два разных типа сообщений - тип A и B. Каждое сообщение имеет различную структуру - тип A содержит элемент Int, а тип B содержит двойной элемент. Моя система должна передать оба типа сообщений многочисленным темам бизнес -логики. Снижение задержки очень важно, поэтому я исследую, используя разрушитель для передачи сообщений из основного потока в потоки бизнес -логики механически симпатическим образом. Это имеет смысл, потому что разрушитель предварительно выделяет объекты в кольцевом буфере. Тем не менее, это также затрудняет передачу двух различных типов сообщений в потоки моей бизнес -логики через разрушитель. Исходя из того, что я могу сказать, у меня есть четыре варианта: < /p>


Настройте разрушитель для использования объектов, содержащих массив байтов фиксированного размера < /strong> (как рекомендовано, как следует использовать Disruptor (шаблон нарушения) для создания систем сообщений реального состояния?). В этом случае основной поток должен кодировать сообщения в байтовые массивы, прежде чем публиковать их в разрушитель, и каждый из поток бизнес -логики должен декодировать байтовые массивы обратно в объекты после получения. Недостатком этой настройки является то, что бизнес -логические потоки не совсем делятся памятью от разрушителя - вместо этого они создают новые объекты (и, таким образом, создают мусор) из байтового массива, предоставленного разрушителем. Владетельство этой настройки заключается в том, что все потоки бизнес -логики могут читать несколько различных типов сообщений из одного и того же разрушителя. В приведенном выше случае будет два отдельных разрушителя - один для объектов типа А и другой для объектов типа B. Владетельство этой настройки состоит в том, что основной поток не должен кодировать объект в байт, а бизнес -потоки меньше логических потоков могут делиться теми же объектами, что и в разрушении (не созданный мусора). Недостатком этой настройки является то, что каким -то образом каждая поток бизнес -логики должна будет подписаться на сообщения от множественных разрушителей. /> Настройте разрушитель для использования объекта ссылок < /strong>. Тем не менее, в этом случае я теряю преимущества производительности предварительной предварительной среды объекта и упорядочения памяти. Я чувствую, что вариант № 2 - самое чистое решение, но я не знаю, могут ли потребители технически подписаться на сообщения от нескольких разрушителей. Если кто -то может дать пример для реализации опции № 2, это было бы очень оценено!

Подробнее здесь: https://stackoverflow.com/questions/168 ... sage-types

Вернуться в «JAVA»