В книжках по erlang обычно рекомендуют использовать выделенный процесс по централизованное хранение данных. Это не всегда годится (не всегда удобно), когда к этим данным нужно обеспечить мультиядерный доступ на высоких скоростях
( Read more... )
access=denied означает что сессию мы держим какое-то время, но не разрешаем по ней. Это нужно, что бы нельзя было положить авторизационный бекенд. Он пишется на рельсах/пхп и в 100 раз медленнее.
В update_counter мне сильно не хватило вот чего: - возможности не делать ничего, если счетчик вышел за указанный предел - возможности проверить что-либо перед обновлением
С одной стороны, все это можно было бы описать в сценарии «список операций, выполнять с первой по очереди, пока одна из них не окажется неудачной», а с другой - если реализовывать все хотелки, то получится очередной редис.
Алсо один генсервер с маленьким стейтом занимает 7 КБ памяти, и можно удариться в экстремизм «один юзер - один процесс» с регистрацией в gproc.
Еще у меня есть боль, связанная с неудавшейся организацией masterless очереди на ets/bag, но я не могу эту боль вербализовать из-за того, что писал код на грани своего владения предметом.
Comments 10
Надо было сразу использовать update_counter, и не париться.
Не очень понятна логика с decrement_counter(): у вас в случае access=denied тоже сессия создается, но счетчик не увеличивается?
Reply
access=denied означает что сессию мы держим какое-то время, но не разрешаем по ней. Это нужно, что бы нельзя было положить авторизационный бекенд. Он пишется на рельсах/пхп и в 100 раз медленнее.
Reply
и слайды.
Reply
Reply
Очень сложно, неудобно, нельзя делать ram-only, всё равно на диске что-то остается.
Reply
Reply
Reply
- возможности не делать ничего, если счетчик вышел за указанный предел
- возможности проверить что-либо перед обновлением
С одной стороны, все это можно было бы описать в сценарии «список операций, выполнять с первой по очереди, пока одна из них не окажется неудачной», а с другой - если реализовывать все хотелки, то получится очередной редис.
Алсо один генсервер с маленьким стейтом занимает 7 КБ памяти, и можно удариться в экстремизм «один юзер - один процесс» с регистрацией в gproc.
Еще у меня есть боль, связанная с неудавшейся организацией masterless очереди на ets/bag, но я не могу эту боль вербализовать из-за того, что писал код на грани своего владения предметом.
Reply
Reply
Дальше мы можем проверить что было и что стало: была ли смена или нет.
Reply
Leave a comment