Size: a a a

2019 December 04

PA

Pavel Agarkov in pro.kafka
Привет, подскажите - максимальный размер сообщения считается уже с учетом заголовков сообщения или они отдельно считаются?
если отдельно, то какой у них максимальный размер?
источник

RA

Roman Ananyev in pro.kafka
Ребята, привет!
Нужен ваш совет, а то у нас сложилась дебатная ситуация с подходом, как один из кластеров Кафка использовать =)
Дело в том, что один из наших кластеров используется для интеграции всякого рода данных в GreenPlum (в основном из RDBMS туда льется), на митапе, Осенняя Кафка который, мы рассказывали про него.
источник

RA

Roman Ananyev in pro.kafka
Там история такая - есть у нас дофига систем, работающих на БД Oracle, MSSQL, PostgreSQL, Mongo и так далее, вот из них все затекает в Кафку, через коннекторы JDBC и Debezium, как в AVRO, так и в JSON. А затем ребята дата инженеры через Ni-Fi и прочие ETL тулы забирают эти данные и пишут в GreenPlum. Но он очень нестабильно работает по ряду причин и поэтому они хотят, чтоб если он будет не доступен, хранить в Кафка, вот эти вот все данные из БД пришедшие, в течении 2 недель. То есть retention такой у топиков делать - типа за это время верняк GreenPlum успеют оживить =)
источник

RA

Roman Ananyev in pro.kafka
И как раз под весь этот интеграционный процесс, данный кластер и отведен.
А объем суммарно данных по нашим подсчетам со всех БД мной перечисленных, за 2 недели составляет около 500 ТБ. А текущий кластер таким объемом не располагает, поэтому требуется закупка необходимого оборудования. Которое нужно вот для решения текущей такой проблемы, которая через некоторое время может и уйдет – ну не будет у GreenPlum простоя в 2 недели.
источник

RA

Roman Ananyev in pro.kafka
Поэтому и возник вопрос - насколько вообще релевантно Кафку использовать для хранилки вот так в лоб или есть какие-то более элегантные и верные сценарии, как такой вопрос о хранении более 500 ТБ данных, можно решить?
Какие вообще лучшие практики в целом, если возникает подобная задача?
источник

RA

Roman Ananyev in pro.kafka
Может это анти-паттерн в целом для Кафки и есть куда более грамотное решение.
И если кто с такими большими кластерами работал, то подскажите плиз, на каком оборудовании такое делали или может вообще в облаке?
источник

RA

Roman Ananyev in pro.kafka
Заранее спасибо!
источник

GG

George Gaál in pro.kafka
Roman Ananyev
Поэтому и возник вопрос - насколько вообще релевантно Кафку использовать для хранилки вот так в лоб или есть какие-то более элегантные и верные сценарии, как такой вопрос о хранении более 500 ТБ данных, можно решить?
Какие вообще лучшие практики в целом, если возникает подобная задача?
нормально использовать кафку как хранилку
источник

GG

George Gaál in pro.kafka
хоть вообще "вечный лог"
источник

GG

George Gaál in pro.kafka
но я бы подумал о чем. Кафка эффективна, пока у тебя хвост данных, которые записали продюсеры - в оперативной памяти. Тогда кафка может быстро отдать данные консумерам, практически без задержки. Как только ты пытаешься использовать кафку как базу данных с "долгим" логом - у тебя возникают дополнительные накладные расходы. Во-первых, у тебя получается не последовательная запись на диск, а рандомное чтение с диска. Во-вторых, у тебя начнется история, что консумеры начнут срать в зукипер своими офсетами (так ведь), а нафиг это надо?
источник

GG

George Gaál in pro.kafka
сразу говорю - я диванный эксперт, и это мои измышлизмы
источник

DI

Dmitry Ibragimov in pro.kafka
источник

VG

Vik Gamov in pro.kafka
This 👌
источник

A

Artjom Kalita in pro.kafka
Но зачем ?
источник

DI

Dmitry Ibragimov in pro.kafka
Artjom Kalita
Но зачем ?
Например, если льется CDC, можно хранить топики с инитами и новых потребителей подключать к ним и не перепроливать заново все данные из источников
источник

IK

Ilia Khaustov in pro.kafka
Скучный вопрос. У конфлюент есть кафка коннектор для JDBC, его Sink используется, чтобы писать в Postgres апдейты, которые шлёт Debezium из MySQL. Пишутся с использованием transform Unwrap, то есть фактически реплицируют таблицы. Однако, выяснилось что MySQL может хранить нулевые байты в строках (0x00), а постгрес на них ругается. Вопрос в том, можно ли как-то конфигурацией коннектора вычищать эти байты из строк или это слишком кастомно и надо реализовывать самостоятельно?
источник

VG

Vik Gamov in pro.kafka
Ilia Khaustov
Скучный вопрос. У конфлюент есть кафка коннектор для JDBC, его Sink используется, чтобы писать в Postgres апдейты, которые шлёт Debezium из MySQL. Пишутся с использованием transform Unwrap, то есть фактически реплицируют таблицы. Однако, выяснилось что MySQL может хранить нулевые байты в строках (0x00), а постгрес на них ругается. Вопрос в том, можно ли как-то конфигурацией коннектора вычищать эти байты из строк или это слишком кастомно и надо реализовывать самостоятельно?
написать свой transformation ?
источник

IK

Ilia Khaustov in pro.kafka
Vik Gamov
написать свой transformation ?
Хотелось бы обойтись без написания Java кода - некому поддерживать
источник

IK

Ilia Khaustov in pro.kafka
Но судя по всему придётся так делать, да
источник

RA

Roman Ananyev in pro.kafka
Dmitry Ibragimov
Например, если льется CDC, можно хранить топики с инитами и новых потребителей подключать к ним и не перепроливать заново все данные из источников
Это то да =) Вопрос в том скорее, насколько это лучше, чем хранить те же иниты в S3 или хоть Ёлке, периодически их обновляя там - если вообще лучше.
А оперативную инфу уже гнать через Кафку.
источник