накапливать по n количеству сообщений и отправлять в одном запросе, но есть вероятность что поток сообщений может прерваться на некоторое время, и система будет простаивать, пока поток сообщений не продолжится. Может написать таймер, который будет следить, если нет сообщений в течении 10 секунд, отправлять в бд все что есть? Или это совсем костыльно?
У нас есть подобная задача. Мы принимаем очень большое число метрик с различных устройств. Каждая нода аккамулирует их у себя локально (мы используем boltDB). С переодичностью демоны читают локальные хранилища и пачкой суют в базу.
Получаешь сообщение, передаешь в другую горутину накопитель через канал, накопитель с каким-то интервалом обработывает скопом и шлёт дальше.
буферизированный канал + таймер
Обсуждают сегодня