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

Народ, и мне посоветуйте плз %) 1) есть sql база 2) есть

общий жырненький гошный бекенд: все операции с базой, бизнес-логикой и прочим таким происходят только в нём.
Кроме того, при старте он кешит в себе часть табличек бд, к которым чаще всего происходят обращения -- в кеш с несколькими ключами, чтобы по ним можно было производить выборку
При любых изменениях - апдейт кеша, затем бд

3) есть куча мелких сервисов (бекенды сайтов, еще какие-то мелкие штуки), которые обращаются к этому общему беку (grpc, go-micro -> эти мелкосервисы можно плодить и взаимозаменять как угодно)


----


Проблема: "толстый бек" может быть только один, т.к. в случае поднятия >1 возникнет инконсистентность кеша
Хочется поиметь возможность эти "толстые беки" плодить -- но не могу решить, как лучше :(

а) какой-нибудь брокер сообщений, куда они будут плеваться изменениями своего кеша, а остальные инстансы - слушать и реагировать. Хз, как-то переусложнённо =/

б) какой-нибудь сторонний общий кеш вместо инмемори кеша для каждого. Простейший, типа мемкешед. Но с поиском по разным ключам, мб вообще свой набросать.
Проще, но лишний демон возникает. Но при проблемах и его недоступности - можно прямо из базы читать

в) ???

3 ответов

10 просмотров

если нужно ACID в кэше, рискну предложить архитектуру - одна пишущая, много читающих нод, фоновая репликация. если идет запись в мастер, он сам и все читающие блокируются до момента очередной синхронизации, но до окончания их блокировки - изменение в мастере не применяется. каждый разблокируется при получении сообщения синхронизации (либо если упал), а мастер применяет изменения последним. пишущего можно перевыбирать, например, по raft алгоритму, или по анализу степени загруженности ноды. но проблемы синхронизации так или иначе будут все равно. raft еще помогает хранить журналы для упавшей ноды и восстанавливать ноду после ее возвращения в кластер. посмотри реализацию etcd, там интересно сделано.

я за Б - что-то с репликацией из коробки, типа редисов или тарантулов

Wingman- Автор вопроса

Ну то есть, вариант б =)

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта