Я спорил с моим программистом о лучшем способе этого. У нас есть данные, которые поступают со скоростью около 10000 объектов в секунду. Это нужно обрабатывать асинхронно, но свободного упорядочения достаточно, поэтому каждый объект вставляется в одно из нескольких очередей сообщений (есть также несколько производителей и потребителей). Каждый объект ~ 300 байт. И это должно быть долговечным, поэтому MQ настроены на сохранение на диске.
Проблема в том, что часто эти объекты дублируются (так как они неизбежно дублируются в данных, поступающих к производителю). У них есть 10-байтовые уникальные идентификаторы. Это не катастрофично, если объекты дублируются в очереди, но это происходит, если они дублируются в обработке после того, как они были взяты из очереди. Каков наилучший способ обеспечить как можно более близкую к линейной масштабируемости, не обеспечивая дублирования при обработке объектов? И, возможно, связанный с этим, должен ли весь объект храниться в очереди сообщений или только идентификатор с телом, хранящимся в чем-то вроде cassandra?
Спасибо!
Изменить: Подтверждено, где происходит дублирование. Кроме того, до сих пор у меня было 2 рекомендации для Redis. Раньше я рассматривал RabbitMQ. Каковы плюсы и минусы каждого из моих требований?