Как записать 200 тыс строк за секунду?

Нужно единоразово записать 200 тыс заспросов за одну секунду, на этом все, дальше ничего записывать не нужно. Т.е. это единоразовая операция, но очень критичная к скорости. У нас кластер. Важно чтобы при смерти любой из машин данные не потерялись.
Bulk insert не подходит, данные придут с разных клиентов.
Монга 3 заявляет что держит 300k инсертов в секунду, но не факт что на нашем железе будут такие же показатели, и ребята которые с ней плотно работали сказали, что не стали бы расчитывать на такую цифру у монги. И это вероятно цифра запись локально а не в кластере.
Есть дргуая идея, например записать в rabbitmq. Но опять же вопрос выдержит ли он такую цифру, и все ли там будет нормально если сделать кластер из рэбитов в разных ДЦ с точки зрения надежности и скорости.
Была еще идея записывать в файлы, но тут проблема как не потерять файлы при смерти машины и как их синхронизировать.

Можно рассмотреть какие-то другие технологии, если данные не подойдут.
  • Вопрос задан
  • 1534 просмотра
Пригласить эксперта
Ответы на вопрос 4
kaiten
@kaiten
Архитектор ИС
Посмотрите в сторону Apache Kafka
Сверх производительная очередь
Ответ написан
Комментировать
sim3x
@sim3x
Чувствуется недосказанность в вопросе

Ведь 200к за раз запихнть в очередь СУБД и потом вставить в БД - легко
Принять по гигабиту 200мб и записать в текстовик на RAID10 - не проблема
Ответ написан
@epolyak
я бы на вашем месте использовал очереди - например RabbitMQ или ActiveMQ. отправить в очередь 200к сообщений не проблема? а если в одно сообщение например уложить 100 объектов то вообще получится 1000 сообщений. Так как очередь персистентна то при падении нечего не потеряется.

На другом конце очереди стоит слушатель который спокойно в фоне уже раскладывает данные в БД
Ответ написан
@lega
Можно быстро записать в redis, на несколько машин, 2 или более (т.е. копии), а потом потихоньку слить куда надо, например в монгу. Либо реплику там настроить.

Можно задублировать запросы клиентов на второй сервер, и пусть оба пишут в файл.
Хотя объем маленький, 60Мб, можно и в памяти подержать пока в базу не запишется.

http запросы? питон дольше http будет разгребать...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы