Увеличение количества потребителей RabbitMQ делает FCM sendEachForMulticast медленнее для каждого пакета — это нормальноJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Увеличение количества потребителей RabbitMQ делает FCM sendEachForMulticast медленнее для каждого пакета — это нормально

Сообщение Anonymous »


У меня есть два микросервиса Spring (A и B).

Сервис A: подготавливает ~10 миллионов токенов устройств (FCM) и разбивает их на фрагменты по 500 токенов.
Каждый фрагмент публикуется в RabbitMQ.
Сервис B: потребляет фрагменты и вызывает SDK администратора Firebase sendEachForMulticast для каждого фрагмента из 500 токенов.
Настройка среды выполнения для службы B:
2 сервера
Сервер №1: 200 одновременных потребителей
Сервер №2: 100 одновременных потребителей
Наблюдаемое среднее время обработки одного фрагмента (500 токенов):
Сервер №1 (200 потребителей): ~27 с на фрагмент
Сервер №2 (100 потребителей): ~12 с на фрагмент
Когда я увеличиваю количество одновременных потребителей, среднее время обработки каждого фрагмента становится хуже, а не лучше.
/>Вопросы:
  • Это ожидаемое/нормальное поведение с FCM + sendEachForMulticast?
  • Что я могу настроить (RabbitMQ, пулы потоков, размер фрагмента, сеть/прокси, настройки FCM и т. д.), чтобы улучшить пропускную способность и/или уменьшить количество фрагментов задержка?
Примечания.
Каждый фрагмент содержит ровно 500 токенов (максимум SDK).
Один же путь кода, одинаковый размер полезной нагрузки.
Нет исключений для приложений; просто более медленное среднее время при более высоком параллелизме.
Мы подтверждаем сообщение RabbitMQ после завершения вызова FCM.

Подробнее здесь: https://stackoverflow.com/questions/797 ... -per-batch
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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