Amazon ElastiCache

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 07:18, 13 декабря 2017.

Amazon ElastiCache является полностью управляемым хранилищем данных в памяти и сервисом кэширования Amazon Web Services (AWS). Сервис повышает производительность веб-приложений за счет получения информации из управляемой кэш-памяти вместо того, чтобы полностью полагаться на более медленные базы данных, которые работают с постоянной памятью. ElastiCache поддерживает два движка кэширования с открытым исходным кодом: Memcached и Redis (также называемый "ElastiCache for Redis").[1]

В качестве веб-сервиса, работающей в вычислительном облаке, Amazon ElastiCache предназначен для упрощения настройки, работы и масштабирования memcached и Redis. Комплексные процессы администрирования, такие как исправление программного обеспечения, резервное копирование и восстановление наборов данных и динамическое добавление или удаление, управляются автоматически. Масштабирование ресурсов ElastiCache может выполняться одним вызовом API.[2]

Amazon ElastiCache был впервые выпущен 22 августа 2011 года,[3] c поддержкой memcached. За этим последовала поддержка зарезервированных узлов 5 апреля 2012 г. [4] и Redis 4 сентября 2013 года.[5]

Применение

В качестве СУБД с несколькими поддерживаемыми механизмами Amazon ElastiCache имеет широкий спектр применений, в том числе:

Ускорение производительности

Ограничения баз данных часто являются узким местом для производительности приложений. Поместив Amazon ElastiCache между уровнем приложения и уровнем базы данных, операции с базой данных можно ускорить.[6]

Снижение затрат

Использование ElastiCache для ускорения производительности базы данных может значительно сократить инфраструктуру, необходимую для поддержки базы данных. Во многих случаях экономия средств перевешивает затраты на кэш. Expedia способны использовать ElastiCache, чтобы сократить запас ресурсов DynamoDB на 90%, сократив общую стоимость базы данных на 6 раз.[7][8]

Обработка временных рядов данных

Используя механизм Redis, ElastiCache может быстро обрабатывать временные данные, быстро выбирая самые новые или самые старые записи или события в пределах диапазона времени.[9]

Списки лидеров

Списки лидеров - эффективный способ показать пользователю быстро, где они в настоящее время находятся в рамках игровой системы. Для систем с большим количеством игроков, вычисление списка игроков может быть сложной задачей. Использование Amazon ElastiCache с движком Redis может включать высокоскоростную шкалу для списков лидеров.[10]

Ограничение скорости

Некоторые API-интерфейсы разрешают только ограниченное количество запросов за период времени. Amazon ElastiCache для движка Redis может использовать инкрементные счетчики и другие инструменты, чтобы контролировать доступ к API для соответствия ограничениям.[11]

Атомарный счетчик

Программы могут использовать инкрементные счетчики для ограничения допустимого количества чего-либо, например, максимального количества учащихся, обучающихся по курсу, или количество игроков в игре в определенном диапазоне. Использование счетчиков может создать условие гонки, потому что счетчик не обновлялся быстро. Использование функций Atom Counter для ElastiCache для Redis, где одна операция проверяет и увеличивает значение счетчика, предотвращает условия гонки.[12]

Чаты и доски объявлений

ElastiCache для Redis поддерживает шаблоны публикации-подписки, которые позволяют создавать чаты и ленты сообщений, на которых сообщения автоматически распространяются среди заинтересованных пользователей.[13]

Параметры развертывания

Amazon ElastiCache может использовать "узлы кэша по требованию" или зарезервированные узлы кэша.

Узлы по требованию предоставляют некоторый почасовой объем кэша, а ресурсы в облаке AWS назначаются при предоставлении кэша. Узел "по требованию" может быть удален из службы его владельцем в любое время. Каждый месяц владельцу выставляется счет за используемые часы.[14]

Зарезервированные узлы предоставляются на срок в 1 год или в 3 года. Почасовая стоимость зарезервированных узлов значительно ниже, чем почасовая стоимость "узлов по требованию".[15]

Производительность

Эффективный кэш может значительно увеличить производительность приложения и скорость навигации пользователя. Amazon CloudWatch отображает показатели производительности ElastiCache, которые можно отслеживать.[16]

Ключевые показатели эффективности

  • Подключения (объем подключений и запросов): Количество текущих подключений к кэшу, команды Get и Set, полученные кэшем
  • Производительность кэша: Попадания, промахи, задержка репликации, задержка
  • Памяти: Использование памяти, количество свободной памяти на хосте, использование подкачки, коэффициент фрагментации памяти
  • Другие показатели хоста: Нагрузка на CPU, количество байтов, считанных из сети хостом, количество байтов, записанных в сеть хостом

Источники показателей

Многие показатели ElastiCache могут быть собраны с AWS через CloudWatch или непосредственно из механизма кэша, будь то Redis или Memcached, с интегрированным с ним средством мониторинга:[17]

Использование онлайн-консоли - самый простой способ мониторинга ElastiCache с помощью CloudWatch. Он позволяет настраивать базовые автоматические предупреждения и получать визуальную картину последних изменений в отдельных показателях.

  • CloudWatch CLI

Метрики, относящиеся к ElastiCache, также могут быть получены с помощью командной строки. Он может использоваться для выборочных проверок и специальных расследований.

  • Инструмент мониторинга, интегрированный с CloudWatch

Третий способ сбора показателей ElastiCache - это специальный инструмент мониторинга, интегрированный с Amazon CloudWatch.

Известные клиенты

Пользователи Amazon ElastiCache включают

Ограничения

Как услуга AWS, ElastiCache предназначен для доступа исключительно из AWS, хотя можно подключить службу к приложениям и базам данных, которые не размещены AWS.[23]

Инструкция по настройке Amazon ElastiCache

Прежде всего для работы Amazon ElastiCache необходим аккаунт AWS и настроенный Amazon EC2. Его настройка здесь описываться не будет.

Запуск кластера

  1. Перейдите по ссылке https://console.aws.amazon.com/elasticache/. Вы попадете в консоль ElastiCache.
  2. Выберите пункт Get Started Now. Вы попадете на страницу создания кластера.
  3. Выберите необходимый вам движок БД (Redis или Memcached).
  4. Необходимо задать Имя кластера, тип ноды, количество нод (в случае Memcached), количество реплик (в случае Redis без режима кластера) или количество шард и реплик на шард. (в случае Redis в режиме кластера)
  5. Чтобы ElastiCache был виден из EC2, необходимо чтобы они были в одной группе подсети (пункт Subnet group). Также у них должна быть одна Security group, настроенная в EC2. (рекомендуется выделять для ElastiCache отдельную группу)
  6. После настройки остальных пунктов (резервное копирование, импортирование данных и др.) необходимо нажать Create.

Далее необходимо дождаться статуса available у созданного кластера в списке.

Соединение EC2 и ElastiCache

  1. Для начала необходимо определить с помощью чего запущен кластер: EC2-VPC или EC2-Classic. Самый простой способ это сделать - AWS CLI.
aws ec2 describe-account-attributes
{
    "AccountAttributes": [
        {
            "AttributeName": "supported-platforms", 
            "AttributeValues": [
                {
                    "AttributeValue": "VPC"
                }
            ]
        }
        
        **** часть удалена за ненадобностью ****
        
    ]
}
Если "AttributeValue" равен VPC, значит кластер запущен в режиме EC2-VPC, если же у него будет два значения, EC2 и VPC, то он запущен в режиме EC2-Classic.

EC2-VPC

  1. Пройдите по ссылке https://console.aws.amazon.com/ec2/ в консоль Amazon EC2.
  2. В навигационной панели найдите пункт Network & Security и пройдите в Security Groups.
  3. Выберите из списка групп ту, которую вы используете для ElastiCache.
  4. Во вкладке Inbound нажмите кнопку Edit.
  5. Нажмите кнопку Add rule и настройте с такими параметрами: Type - Custom TCP Rule, Port range - 11211 для Memcached или 6379 для Redis, Source - Anywhere. Save.

EC2-Classic

  1. Пройдите по ссылке https://console.aws.amazon.com/elasticache/ в консоль ElastiCache.
  2. Выберите Security Groups в навигационной панели.
  3. Нажмите на квадрат слева от группы default.
  4. Выберите из списка внизу экрана группу, которую вы хотите авторизовать.
  5. Нажмите кнопку Add.

Теперь, если все сделано правильно, вы должны иметь возможность подключиться к Memcached или Redis из вашего экземпляра EC2.

Подключение

  1. Пройдите по ссылке https://console.aws.amazon.com/elasticache/ в консоль ElastiCache. Выберите из навигационной панели Redis или Memcached, в зависимости от того, какой кластер вы создавали.
  2. Кликните по названию вашего кластера. Если вы создавали на основе Redis в режиме кластера, то выберете необхадимый шард.
  3. У нужной ноды запомните Endpoint, по нему экземпляр EC2 будет подключаться к кластеру.
  4. Проверить работоспособность соединения можно через терминал вашего EC2 с помощью telnet для Memcache или с помощью утилиты redis-cli для Redis.

Пример настройки

См. также

Ссылки

  1. "ElastiCache for Redis". Amazon Web Services. Retrieved 2016-08-29. 
  2. "Scaling". AWS ElastiCache Documentation. Retrieved 2016-07-08. 
  3. "Amazon ElastiCache – Distributed In-Memory Caching". amazon.com. Retrieved 2016-07-08. 
  4. "Reserved Cache Nodes for Amazon ElastiCache". amazon.com. Retrieved 2016-07-08. 
  5. "Amazon ElastiCache – Now With a Dash of Redis". amazon.com. Retrieved 2016-07-08. 
  6. "Use Memcached to improve database performance". CloudVPS. Retrieved 2016-07-08. 
  7. "Customer Testimonials". amazon.com. Retrieved 2016-07-08. 
  8. "AWS Building Scalable Applications on AWS NoSQL Services". youtube.com. Retrieved 2016-07-08. 
  9. "Using Redis as a Time Series Database: Why and How". InfoQueue. Retrieved 2016-07-08. 
  10. "USING REDIS TO BUILD YOUR GAME LEADERBOARD". Social Point. Retrieved 2016-07-08. 
  11. "DOWN BOY: HOW TO EASILY THROTTLE REQUESTS TO AN API USING REDIS". Collective Idea. Retrieved 2016-07-08. 
  12. "An Atomic Rant". Nate Wigel vs Technology. Retrieved 2016-07-08. 
  13. "Create a Simple Chat Room with Redis Pubsub". Program Every Day. Retrieved 2016-07-08. 
  14. "Amazon ElastiCache Pricing". amazon.com. Retrieved 2016-07-08. 
  15. "ElastiCache Reserved Cache Nodes". amazon.com. Retrieved 2016-07-08. 
  16. "Monitoring ElastiCache performance metrics with Redis or Memcached". Retrieved 2016-10-24. 
  17. "Collecting ElastiCache metrics + its Redis/Memcached metrics". Retrieved 2016-10-24. 
  18. "Airbnb Case Study". amazon.com. Retrieved 2016-07-08. 
  19. "Building Scalable Applications on AWS NoSQL Services". youtube.com. Retrieved 2016-07-08. 
  20. "AWS Case Study: Zynga". amazon.com. Retrieved 2016-07-08. 
  21. "FanDuel Case Study". amazon.com. Retrieved 2016-07-08. 
  22. "Building Scalable Applications on AWS NoSQL Services". youtube.com. Retrieved 2016-07-08. 
  23. "Accessing ElastiCache Resources from Outside AWS". AWS Documentation. Retrieved 2016-07-08. 

Внешние ссылки

Источник