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

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

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

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


----


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

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

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

в) ???

3 ответов

11 просмотров

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта