Назад | Перейти на главную страницу

Каков типичный способ настройки сервера Redis в производственной среде?

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

Насколько я понимаю, Redis работает очень быстро, потому что это база данных в памяти. Но если сервер Redis находится на другом компьютере с моего сервера NodeJS, мне придется сделать сетевой запрос с моего сервера NodeJS на сервер Redis, и если это промах в кеше, мне придется сделать еще один сетевой запрос к моей базе данных. сервер (всего 2 сетевых запроса). Разве не было бы быстрее обойтись без кэширования сервера Redis, поскольку я был бы уверен, что к серверу базы данных будет сделан только 1 сетевой запрос? Каков типичный способ настройки сервера Redis в производственной среде?

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

Но как только вы начнете обсуждать балансировку нагрузки и / или кластеризацию, все усложняется: в некоторых ситуациях может быть быстрее сохранить общий кеш для всех веб-серверов, даже если это означает дополнительный сетевой переход и, возможно - в случае кластера Redis - даже несмотря на дополнительный трафик между узлами Redis. Это, конечно, вопрос проектирования системы и практического тестирования.