Как стать автором
Обновить

HighLoad++, Юрий Насретдинов (ВКонтакте): как VK вставляет данные в ClickHouse с десятков тысяч серверов

Время на прочтение18 мин
Количество просмотров8.6K
Всего голосов 20: ↑19 и ↓1+18
Комментарии6

Комментарии 6

Спасибо за текстовую версию моего доклада :). Пожалуй действительно стоит поработать над речью немного, поскольку читать это довольно тяжело :).

Речь, как речь. Зато доклад супер крутой! Спасибо за качественный контент.
Хороший вопрос про кафку. Вот только после пробы кафки автор доклада вернулся бы на свою схему. На большом потоке чтение из кафки становится проблемой.
И непонятно почему не юдп. Это логи, можно терять какую-то часть. Ценность невелика.
Rsyslog. На самом деле мы его использовали как запасной вариант, для того чтобы можно было без дампа бинлога читать, но он не может в длинные строки, в принципе больше 4 килобайт не может записать. Сжатие данных точно так же самим надо делать. Чтение будет идти с файлов.

Позволю себе заметить, что rsyslog может принимать длинные строки по TCP (я лично слал чуть больше 128k и это не предел). По UDP и в Unix Datagram Socket можно слать столько, сколько ваша OS позволит (я слал 128k в юникс-сокет и это был дефолтный максимум в линуксе). Ваша проблема с 4k явно связана с отправляющей стороной. Например, вы слали через logger (тогда вам еще повезло) или из php (там размер output-буфера по умолчанию выставлен в 4k). На стороне rsyslog по умолчанию максимальный размер сообщения 8k (настраивается в конфиге).

Ну и отправлять из rsyslog вы можете хоть в тот же ClickHouse (omclickhouse), хотя реализовано это было всего год назад, если мне память не изменяет. Правда, в идеале, там бы еще напильником пройтись и заменить INSERT INTO на COPY.
Я выше, конечно же, наврал про максимальный размер в случае UDP. Оно там ограничего MTU :)
Ваша проблема с 4k явно связана с отправляющей стороной. Например, вы слали через logger (тогда вам еще повезло) или из php (там размер output-буфера по умолчанию выставлен в 4k). На стороне rsyslog по умолчанию максимальный размер сообщения 8k (настраивается в конфиге).

Да, мы слали как из PHP, так и из KPHP, который, насколько я понимаю, имеет схожие ограничения.
На самом деле у нас строки обрезались даже до меньшей длины, до 1.5 Кб, если мне не изменяет память, и я предполагаю, что это было связано с настройками rsyslog и с тем фактом, что это всё отправлялось по UDP.
В общем, возможно вы правы на счёт того, что через rsyslog можно отправлять длинные строки, однако это сложно назвать хорошим решением из-за того, что настроить rsyslog таким способом сложно, лично мне неясно, как обеспечить надежную доставку, и модуля omclickhouse на тот момент тоже не было :).

Зарегистрируйтесь на Хабре, чтобы оставить комментарий