Существует ли существующее программное обеспечение для готового к работе распределенного журнала с малой задержкой? Идея состоит в том, чтобы хранить входные сообщения для служб до того, как они будут отправлены в саму службу.Когда служба запускается, она берет самый последний снимок своего состояния и воспроизводит входные сообщения.Если служба является детерминированной, несколько экземпляров службы могут быть запущены одновременно.Это обеспечит как высокую доступность, так и нулевое время простоя развертываний.
Доступно много журналов, но некоторые с высокой задержкой, некоторые не полностью распределены / не могут быть кластеризованы, а некоторые еще не готовы к работе.
Доступное программное обеспечение распределенного журнала
Кафка
NATS Streaming
TANK
DistributedLog
Пульсар
RocketMQ
Подъемный мост
Jocko
LogDevice
Требования
Сообщение/ постоянство события (либо в памяти, либо также на диске)
Порядок сообщений в теме / разделе
Доставка по крайней мере один раз: Подтверждение сообщения между издателем и сервером (для операций публикации) и между подписчиком и сервером (для подтверждения доставки сообщения)
Историческое воспроизведение сообщения по теме: Новые подписки могут указыватьначальная позиция в потоке сообщений, сохраненных для канала подписанного субъекта.
Высокая доступность: должно иметь несколько кластеризованных узлов с репликацией между ними
Низкая задержка: если мы собираемся ждать, пока два узла не получат сообщение, прежде чем отправлять его, то оно должно быть с низкой задержкой.В идеале всего несколько миллисекунд, но не более десятков миллисекунд.Это основная причина, по которой Кафка кажется неподходящим для этого.
Есть ли варианты, которые я пропустил?