Проект парсит различные источники и постит их в другие системы.
Парсер запускается по таймеру. И вот как дальше. Парсер что-то нашел. Как ему правильно отдать данные постеру?
Вызывать rest api предоставляемое постером? Или же публиковать в Rabbit или Kafka, ну а постер соответственно будет на них подписываться?
Или же вообще, как предлагают, парсер формирует json поста и пишет в бд, а парсер тоже по таймеру забирает это из бд.
Нужно понимать, что N распарсенных источников могут постится в M других систем.
Здравствуйте, BlackEric, Вы писали:
BE>Проект парсит различные источники и постит их в другие системы. BE>Парсер запускается по таймеру. И вот как дальше. Парсер что-то нашел. Как ему правильно отдать данные постеру? BE>Вызывать rest api предоставляемое постером? Или же публиковать в Rabbit или Kafka, ну а постер соответственно будет на них подписываться? BE>Нужно понимать, что N распарсенных источников могут постится в M других систем.
Парсер пишет в кафку. Вернее, само сообщение пишет в какое-то хранилище aka s3, а ссылку на него пишет в кафку.
Каждый постер сам читает кафку (и вытаскивает сообщение из s3).
Если постеры ленивые, и не умеют читать из кафки, то вместо него это может делать твой скрипт — по расписанию читать кафку и дергать API постера.
BE>Или же вообще, как предлагают, парсер формирует json поста и пишет в бд, а парсер тоже по таймеру забирает это из бд.
Не надо БД. Получится своя реализация кафки поверх БД.
Здравствуйте, Буравчик, Вы писали:
Б>Парсер пишет в кафку. Вернее, само сообщение пишет в какое-то хранилище aka s3, а ссылку на него пишет в кафку.
S3 — это Amazon s3?
Почему так, а не помещать все в кафку? Из-за объема? Ее хранилище же тоже можно чистить.
Здравствуйте, BlackEric, Вы писали:
BE>Здравствуйте, Буравчик, Вы писали:
Б>>Парсер пишет в кафку. Вернее, само сообщение пишет в какое-то хранилище aka s3, а ссылку на него пишет в кафку. BE>S3 — это Amazon s3?
Не обязательно амазон. Можно и другие решения — похожие по api на амазон (s3-like) или даже не похожие. Просто s3-like — стандарт де-факто.
BE>Почему так, а не помещать все в кафку? Из-за объема? Ее хранилище же тоже можно чистить.
У кафки ограничен объем сообщения. Увеличить, конечно, можно, но кафка это в первую очередь все-таки брокер, и потом уже хранилище. Большие сообщения могут ухудщить характеристики кафки, в общем, не рекомендуется "производителем".
Здравствуйте, BlackEric, Вы писали:
BE>Проект парсит различные источники и постит их в другие системы.
Так а какие требования к системе: размер сообщений, рейт, требования по доступности?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Здравствуйте, BlackEric, Вы писали:
Б>>Парсер пишет в кафку. Вернее, само сообщение пишет в какое-то хранилище aka s3, а ссылку на него пишет в кафку. BE>S3 — это Amazon s3? BE>Почему так, а не помещать все в кафку? Из-за объема? Ее хранилище же тоже можно чистить.
По дефолту у кафки размер сообщения ограничен 1мб. А желательно чтобы сообщения были порядка килобайт, иначе с перформансом нужно будет бороться.
Как вариант — данные разбивать на пачку мелких сообщений. Но тогда надо будет позаботиться о целостности.
Так что если твои данные помещаются — пиши в кафку. Если нет, то нет.
Up: чистить сообщения в кафке можно по времени (retention period), или по ключу (compacting topic). Т.е. тоже не универсально. Если твои данные укладываются — хорошо, если нет, то плохо...
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, AndrewJD, Вы писали:
AJD>Здравствуйте, BlackEric, Вы писали:
BE>>Проект парсит различные источники и постит их в другие системы. AJD>Так а какие требования к системе: размер сообщений, рейт, требования по доступности?
Размер сообщений — несколько мегабайт.
До 1000 в секунду.
По доступности особых нет.
Думаю, что придется использовать Rabbit, хоть его у нас и нет.