Существует специальная потоковая платформа под названием Apache Kafka, которая решает нечто подобное.С Kafka вы будете публиковать события для использования другими службами.Что делает Kafka особенным, так это тот факт, что события никогда (зависит от конфигурации) удаляются и могут быть снова использованы новыми сервисами, набирающими скорость.Эта функция может использоваться для начального заполнения базы данных (путем установки смещения для темы на 0
и, следовательно, перечитывания истории событий).
Также есть другая функция, называемая GlobalKTable
чемТаблица всех событий для определенной темы.GlobalKTable
содержит последнее значение для каждого ключа (например, первичный ключ), и можно превратить в хранилище состояний (RocksDB под капотом), что делает его запрашиваемым.Это хранилище состояний инициализируется каждый раз при запуске приложения.Таким образом, приложению не нужно иметь саму базу данных, поскольку хранилище состояний будет обновляться автоматически (согласованность по-прежнему следует учитывать).Только для более сложных запросов это хранилище состояний должно сопровождаться базой данных (с помощью kafka вы пытаетесь предварительно вычислить результаты этих запросов и сделать их доступными для отдельного хранилища состояний).
Это было бы сложным делом, но если это соответствует вашим потребностям, это забавная вещь!