Engines, scalability
Engine отвечает за паблишинг между нодами, хранение presence и истории
По умолчанию используется движок Memory. Доступны еще Redis, KeyDB и Tarantool
Memory engine позволяет использовать только одну ноду, Редис позволяет запустить несколько нод на разных машинах с подключением через pub/sub, все ноды будут знать друг про друга, будут хранить историю и presence в редисе, а не в памяти, и данные будут доступны на каждой ноде и не будут теряться при рестартах
Движок задается опцией engine
в конфиге, возможные значения: memory
, redis
и tarantool
(по умолчанию memory
)
Memory Engine
Все данные хранятся в памяти процесса. Это работает быстро но это невозможно масштабировать
Для memory enginge в конфиге доступна опция history_meta_ttl
, ее можно задать чтобы не было утечек памяти
Redis Engine
Redis engine позволяет масштабировать центрифугу (потому что данные хранятся во внешнем хранилище)
Для redis engine в конфиге доступно несколько опций:
- redis_address - строка с адресом и портом редиса
- redis_password - строка с паролем (если используется)
- redis_user - строка с именем пользователя (если используется)
- redis_db - число с номером базы
- redis_tls - true/false для redis tls
- redis_tls_skip_verify - true/false для tls host verification
- redis_prefix - префикс для каналов и ключей в редисе
- redis_use_lists - старая опция оставленная для совместимости
- history_meta_ttl - то что и у memory engine
Центрифуга имеет встроенную поддержку шардинга редисов (но шардятся только данные, общего pub/sub у них не будет)
Пример конфига:
{
...
"engine": "redis",
"redis_address": [
"192.168.1.34:6379",
"192.168.1.35:6379",
]
}
No Comments