Когда использовать memoization в Ruby on Rails

Балансировщику нагрузки приложения не может быть назначен эластичный IP-адрес (статический IP-адрес).

Тем не менее, сетевой балансировщик нагрузки может быть назначен один эластичный IP-адрес для каждой зоны доступности, которую он использует.

Если вы не хотите использовать сетевой балансировщик нагрузки, вы можете объединить их, поместив сетевой балансировщик нагрузки перед балансировщиком нагрузки приложения:

NLB in front of ALB

[ 116] См .: Использование статических IP-адресов для балансировщиков нагрузки приложений | Сеть & amp; Доставка контента

23
задан the Tin Man 9 May 2017 в 21:52
поделиться

2 ответа

Я думаю, что многие Разработчики Rails не до конца понимают, что делает мемоизация и как она работает. Я видел, как она применяется к методам, которые возвращают лениво загруженные коллекции (например, набор данных Sequel), или применяется к методам, которые не принимают аргументов, но что-то вычисляют на основе переменных экземпляра. В первом случае мемоизация - это не что иное, как накладные расходы, а во втором - источник неприятных и трудных для отслеживания ошибок.

Я бы не применил мемоизацию, если

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

    Уловка состоит в том, чтобы извлечь из метода чистую функцию и вместо этого применить к ней мемоизацию.

33
ответ дан 29 November 2019 в 01:49
поделиться

Когда метод выбирает данные из нескольких таблиц, и выполните некоторые вычисления прежде, чем возвратить полученный объект, и этот метод находится многократно в запросах, memoization мог бы иметь смысл.

Помните, что кэширование запроса также активно, поэтому только memoize методы, которые выполняют вычисления в Ruby, не чистые выборки базы данных.

10
ответ дан 29 November 2019 в 01:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: