Size: a a a

Архитектура ИТ-решений

2019 August 20

PD

Phil Delgyado in Архитектура ИТ-решений
mirror - это для сильно удаленных ДЦ...
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
И что, rmq в тех же условиях хуже себя ведет? По факту-то у вас не геораспределенная конфигурация
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
А как вы транзакцию kafka бд сделали?
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Одним rmq и kafka возможности не ограничиваются. Варианты есть.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Leonid Vygovskiy
И что, rmq в тех же условиях хуже себя ведет? По факту-то у вас не геораспределенная конфигурация
Ну, у RMQ вообще беда с кластерной конфигурацией, она регулярно разваливается и вообще с ней куча проблем в эксплуатации.
У кафки несколько брокеров и репликация гораздо надежнее.

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

PD

Phil Delgyado in Архитектура ИТ-решений
Leonid Vygovskiy
А как вы транзакцию kafka бд сделали?
Запись в БД, вычитка оттуда. Для Oracle можно прямо из лога транзакций читать, для других можно руками.
Для FDB у нас более хитрая схема, правда, но там тонкости работы FDB.
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Leonid Vygovskiy
Одним rmq и kafka возможности не ограничиваются. Варианты есть.
А какие?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Leonid Vygovskiy
Проблема хороший-плохой-хороший. Последовательно меня заставляе т читать кафка. Проблема поддержания идемпотентности во всей системе.
Кстати, а в случае rmq - что происходит с задачами, которые не удалось обработать? Они же не попадают обратно в очередь (иначе в какой-то момент все воркеры пытаются безуспешно обработать неудачные задачи)? А если они попадают в отдельную очередь, то кто мешает это сделать на кафке? Еще и транзакционно )
источник

p

pragus in Архитектура ИТ-решений
Phil Delgyado
А в Кафке вообще не надо думать про fsync, там надёжность через реплики. Fsync если ждать, то будет как с любой БД - медленно. Смысл Кафки в отсутствии fsync.
А в чем драма с fsync? Чего с ним так носятся?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Ну, когда-то это была гарантия записи на диск.
источник

EI

Eugene Istomin in Архитектура ИТ-решений
Phil Delgyado
Это проблема не кафки. Это проблема неверного ее использования, причем специально созданного.
Вот второй кейс неправильного использования:
"Kafka is completely unsuitable for RPC, for several reasons. .....
A single slow consumer can block a significant portion of the queue. Kafka is designed for fast (or at least evenly performant) consumers."
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
А откуда цитата?
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Phil Delgyado
Запись в БД, вычитка оттуда. Для Oracle можно прямо из лога транзакций читать, для других можно руками.
Для FDB у нас более хитрая схема, правда, но там тонкости работы FDB.
О чем и речь. Взяв kafka  мне приходится решать задачи, которые я не вижу смысла решать. Причем решать весьма не тривиально.
источник

EI

Eugene Istomin in Архитектура ИТ-решений
Leonid Vygovskiy
А откуда цитата?
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Leonid Vygovskiy
О чем и речь. Взяв kafka  мне приходится решать задачи, которые я не вижу смысла решать. Причем решать весьма не тривиально.
А на чем еще можно  сделать транзакционно добавление в очередь? XA в кролике не предлагать )
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Eugene Istomin
Вот второй кейс неправильного использования:
"Kafka is completely unsuitable for RPC, for several reasons. .....
A single slow consumer can block a significant portion of the queue. Kafka is designed for fast (or at least evenly performant) consumers."
Но это же не верно. Медленный консюмер никого не блокирует. Хотя, конечно, Кафка предполагает, что если вам нужно обрабатывать много сообщений, то они обрабатываются быстро. Но проблемы на одном из консюмеров ее мешают другим.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Блокирует. У вас минимальная единица параллелизма в kafka - это партиция. Если консьюмер начинает считывать сообщение из партиции с задержками, то другие консьюмеры ему помочь не могут. И все сообщения из этой партиции будут обрабатываться с задержками. А классических message broker минимальная единица - сообщение. Поэтому такой проблемы нет.
источник

LV

Leonid Vygovskiy in Архитектура ИТ-решений
Спасибо!
источник

EI

Eugene Istomin in Архитектура ИТ-решений
Leonid Vygovskiy
Блокирует. У вас минимальная единица параллелизма в kafka - это партиция. Если консьюмер начинает считывать сообщение из партиции с задержками, то другие консьюмеры ему помочь не могут. И все сообщения из этой партиции будут обрабатываться с задержками. А классических message broker минимальная единица - сообщение. Поэтому такой проблемы нет.
Да, хорошо описали, благодарю!
источник

PD

Phil Delgyado in Архитектура ИТ-решений
Leonid Vygovskiy
Блокирует. У вас минимальная единица параллелизма в kafka - это партиция. Если консьюмер начинает считывать сообщение из партиции с задержками, то другие консьюмеры ему помочь не могут. И все сообщения из этой партиции будут обрабатываться с задержками. А классических message broker минимальная единица - сообщение. Поэтому такой проблемы нет.
Он блокирует партицию, а не очередь. Вся остальная очередь живёт спокойно и не замечает проблем. А так как перераспределить партиции можно легко, эта проблема - не проблема.
источник