Общий QoS Пакетирование и сжатие сообщений в Java - PullRequest
2 голосов
/ 02 сентября 2010

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

По существу:

  • , если мы обнаружим, что за последнюю секунду было отправлено 3 сообщения, затем запустим пакетные ответы и назначим таймер на 5 секунд
  • Таймер объединит все ответы на сообщения, полученныеследующие 5 секунд в одном сообщении

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

Существуют ли хорошие примеры с открытым исходным кодом для построения базовых реализаций пакетирования / регулирования / сжатия QoS?

1 Ответ

0 голосов
/ 24 марта 2011

мы используем очень похожий механизм для высокой нагрузки.

это будет работать так, как вы описали * Агрегировать сообщения за заданный интервал * Отправить список вместо одного сообщения после этого. * Начните агрегирование снова.

Вам следует остерегаться следующих ловушек: * Если вы используете транзакционную систему обмена сообщениями, такую ​​как JMS, вы можете столкнуться с проблемами, потому что ваша реализация не сможет отправлять внутри транзакции JMS, поэтому будет продолжать агрегирование. В зависимости от размера вашей структуры данных для хранения сообщений может не хватить места. Если у вас очень длинные транзакции, отправляющие много сообщений, это может создать проблему. * Отправка сообщения таким способом будет происходить асинхронно, потому что другой поток будет отправлять сообщение, а поток, вызывающий метод send (), только поместит его в структуру данных. * Придерживаясь примера JMS, вы должны помнить, что способ, которым сообщения потребляются, также изменяется при этом подходе. Потому что вы получите список сообщений от JMS как одно сообщение. Поэтому, когда вы фиксируете это единственное сообщение JMS, вы фиксируете весь список сообщений. Вам следует проверить, не является ли это проблемой для ваших требований.

...