169 похожих чатов

Подскажите, пожалуйста, какие есть надежные способы синхронизировать данные в эластике

с базой (постгя)?
Вот есть, например, таблица с пользоватедями и их никами, бэкенды регулярно что-то там обновляют в никах. Мне хочется все эти данные с никами загрузить в эластик и через эластик осуществлять поиск по никам.


Есть, например, PgSync - приблуда, которая гоняет данные из пг в эластик, но она пипец глючная + работает на хранимках, переодически обваливает базу (не в правильном порядке инициализирует хранимки, что приводит к тому, что база кидает ошибки на любой апдейт в течение секунды) и может потерять данные (как раз из-за неправильной работы с хранимками)

Поднимать полноценный энтерпрайз ЕТЛ с произвольными коннекторами -- ну как-то жирно выглядит. И с ним потом опять проблемы наверняка будут.

Делать процедуру на бэкенде, которая сохраняет и в базу, и в эластик друг за другом тоже не хочу. Там тогда надо обрабатывать падающие транзакции, обходить кейсы, когда эластик затупливает, рейсы пойдут - звучит тоже как напряжно и ненадежно.

Кажется, было бы хорошим решением складывать в кафку диффы, а потом одним отдельным сервисом доставать и обновлять эластик. Но самому писать такое чот лениво, а готовых решений не нашел.

Может подскажете, что вообще сейчас в мире есть удобного для такой проблемы? Если что, мы в aws-е сидим, можем какие-то внутренние сервисы прикупить для этого

8 ответов

22 просмотра

У нас реализовано на стороне бэкенда(отдельным микросервисом). После записи в базу формируется json для эластика и отправляется в кафку, потом отдельным сервисом пишется в эластик. Проблем действительно много, но чёт сомневаюсь, что есть готовое решение для этого.

Stanislav-Markin Автор вопроса
Stanislav Markin
Отдельный сервис сами писали?

Ну да. Это очень маленький сервис, который только пишет в эластик то, что получил по кафке. Микросервисы наше всё)). Из проблем могу отметить наличие задвоений и пропусков данных. Потому сразу могу посоветовать уникальный id выбирать самому на основе данных, а не отдавать на откуп эластику. Соответственно, при записи тогда лучше использовать index а не create api. Ну и метрики навесить, как оказалось у нас эластик падал пару раз и от этого образовались пропуски.

Михаил Гуторов
Ну да. Это очень маленький сервис, который только ...

а зачем коммитить оффсет, если записать не получилось?

Alexandr ∨∧‾ Emelyanov
а зачем коммитить оффсет, если записать не получил...

Саш а как ваще правильно готовить кафку?) 1 партиция = 1 читающий поток?

Vitaly Sirotkin
Саш а как ваще правильно готовить кафку?) 1 партиц...

там вообще идет консьюмер на партицию, а каждый консьюмер это отдельный поток

Alexandr ∨∧‾ Emelyanov
а зачем коммитить оффсет, если записать не получил...

Вот так сделали. Я с этой проблемой тока начал разбираться, смотрю что можно исправить.

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта