Info
Content

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
Back to top