Size: a a a

2021 March 30

DR

Dmitry Russ (Aleksan... in pro.elixir
В конечном итоге, con_cache не лучше cachex-а в этом плане по объективным критериям… А просто у них разный tradeoff - копирование данных и блок таблицы или добавление монитора. Т.е. cachex будет и в транзакциях быстрее, если они быстрые и данные маленькие.

В случае, если транзакции чуть помедленнее и данные, которые нужно загнать в кэш побольше - то con_cache становится лучше - а уж когда дело касается паралеллизации, то con_cache может быть в несколько порядков быстрее, чем cachex.
источник

IK

Ihor Katkov in pro.elixir
отличный материал для статьи/доклада ☝️😄
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Ihor Katkov
отличный материал для статьи/доклада ☝️😄
Ага, если ещё сравнить на каком workload-е cachex транзакции будут действительно быстрее...

Только у меня в ближайщую неделю точно времени ноль....
источник

ML

Maksim Lapshin in pro.elixir
Так, чет тут странное.

Есть задача писать/читать из общей ets.

Читать можно, писать надо через центральный процесс.


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

ML

Maksim Lapshin in pro.elixir
А что такое «распределенный» кеш?
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Maksim Lapshin
Так, чет тут странное.

Есть задача писать/читать из общей ets.

Читать можно, писать надо через центральный процесс.


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

Можно игнорировать конфликты и писать в public ets напрямую, можно через централизованный процесс, а можно - и как это делает con_cache - делать lock на ключ и писать напрямую в public таблицу. Но только один процесс будет писать, кто получил лок на этот ключ.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Maksim Lapshin
А что такое «распределенный» кеш?
Если имелось ввиду из моего сообщения, то не правильно подобранный мною термин был... Кэш, который можно использовать параллельно из разных процессов - то что я имел ввиду.
источник

ML

Maksim Lapshin in pro.elixir
Dmitry Russ (Aleksandrov)
Запись можно организовать по-разному.

Можно игнорировать конфликты и писать в public ets напрямую, можно через централизованный процесс, а можно - и как это делает con_cache - делать lock на ключ и писать напрямую в public таблицу. Но только один процесс будет писать, кто получил лок на этот ключ.
Писать в центральную таблицу из разных процессов - верный путь к lock contention когда записей за 100 тыс/млн в секунду
источник

ML

Maksim Lapshin in pro.elixir
Но по сути я понял.

Такой паттерн мы тоже в флюссонике используем
источник

LL

Lama Lover in pro.elixir
Maksim Lapshin
А что такое «распределенный» кеш?
redis, например
В эликсире это nebulex
источник

ML

Maksim Lapshin in pro.elixir
Залочить за собой ключ, что-то вычислить (или сдохнуть, или не успеть это вычислить) и потом его записать
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Maksim Lapshin
Залочить за собой ключ, что-то вычислить (или сдохнуть, или не успеть это вычислить) и потом его записать
Для этого есть мониторы, которые прекрасно справляются с ситуацией что-то сдохло.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Поэтому и цена, или try catch + copy + 1 message round trip (cachex) или monitor(con_cache) + 2 message round trips.
источник

ML

Maksim Lapshin in pro.elixir
Dmitry Russ (Aleksandrov)
Для этого есть мониторы, которые прекрасно справляются с ситуацией что-то сдохло.
И да, и нет.

У нас есть два паттерна:

Передается какой-то fun/mfa для вычисления ключа, если он отсутствует в кеше и этот код запускается в отдельном процессе или оно работает прям в вызывающем процессе
источник

ML

Maksim Lapshin in pro.elixir
Вот в вызывающем - хрупко и грязно
источник

N

Nekotari in pro.elixir
Всем привет. Начинаю знакомиться с Elixir'ом, пока почитаю тут немного.
источник

P

PULSAR in pro.elixir
Всем доброго времени суток.
источник

B

Bogdan in pro.elixir
А как в graphql указать type у field который может быть и строкой и списком?
источник

B

Bogdan in pro.elixir
:any там нету?
источник

AB

Alexey Bolshakov in pro.elixir
Nekotari
Всем привет. Начинаю знакомиться с Elixir'ом, пока почитаю тут немного.
привет. добро пожаловать
источник