Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Infinispan

Глава 7 из книги "Производительность приложений с открытым исходным кодом".

Оригинал: Infinispan
Автор: Manik Surtani
Дата публикации: 21 Сентября 2012 г.
Перевод: А.Панин
Дата перевода: 6 Января 2014 г.

Введение

Infinispan [http://www.infinispan.org] является грид-платформой с открытым исходным кодом, предназначенной для хранения данных. Это распределенное NoSQL-хранилище для данных в формате пар ключ-значение, использующее оперативную память для их непосредственного хранения. Архитекторы программного обеспечения обычно используют Infinispan и аналогичные грид-платформы либо в качестве повышающей производительность системы распределенного кэширования данных с использованием оперативной памяти, находящейся перед таким более требовательным к ресурсам и медленным хранилищем, как реляционная база данных, либо в качестве распределенного NoSQL-хранилища данных, замещающего реляционную базу данных. В любом случае, главной причиной рассмотрения возможности использования грид-платформы вместе с программным обеспечением любой архитектуры является необходимость повышения производительности последнего. Требование быстрого доступа к данным с малыми задержками также становится типичным в наши дни.

Исходя из этого, производительность платформы Infinispan является ее важнейшим параметром. А кодовая база Infinispan, в свою очередь, в значительной степени обуславливает производительностью платформы.

Обзор

Перед углубленным изучением платформы Infinispan, давайте рассмотрим вопрос о том, в каких случаях Infinispan обычно используется. Платформа Infinispan относится к категории программного обеспечения под названием "связующее программное обеспечение" ("middleware"). В соответствии с информацией из энциклопедии Wikipedia, связующее программное обеспечение "может быть описано как программное обеспечение, предназначенное для объединения программных компонентов" - эти компоненты могут функционировать на серверах и являться такими приложениями, как вебсайты, взаимодействующие с операционной системой или базой данных. Связующее программное обеспечение обычно используется для повышения продуктивности и эффективности труда разработчика программного обеспечения, а также для более быстрой разработки приложений, которые в итоге будет проще сопровождать и тестировать. Все эти возможности достигаются благодаря модульной архитектуре и повторному использованию компонентов. В частности, платформа Infinispan всегда размещается между уровнем любых механизмов обработки данных или бизнес-логики приложения и уровнем хранения данных. Хранение (и извлечение) данных обычно связано с наибольшими проблемами с производительностью, поэтому помещение грид-платформы для хранения данных в памяти перед базой данных обычно значительно повышает скорость работы системы. Более того, хранилище данных обычно является единой точкой конфликта и потенциального отказа. И снова благодаря использованию платформы Infinispan перед более традиционным хранилищем данных (или даже вместо него), приложения могут стать более гибкими и лучше подвергаться масштабированию.

Кто использует платформу Infinispan?

Платформа Infinispan используется во многих отраслях производства и услуг, начиная с телекоммуникационных компаний и заканчивая службами управления финансами, новейшими службами электронной коммерции, системами управления производством, игровыми и мобильными платформами. Грид-платформы практически всегда были популярны в финансовой отрасли из-за предъявляемых к ним жестких требований в плане чрезвычайно быстрого доступа к большим объемам данных такими способами, которые позволяют изолировать систему в случае выхода из строя отдельной машины. Эти требования впоследствии распространились и на другие отрасли производства и оказания услуг, что привело к повышению популярности платформы Infinispan в рамках широкого спектра возможностей ее применения.

В качестве библиотеки или в качестве сервера

Для реализации платформы Infinispan был выбран язык программирования Java (и Scala для некоторых механизмов), при этом она может использоваться двумя различными способами. Во-первых, она может использоваться как библиотека, подключаемая к приложению на языке Java путем подключения файлов JAR платформы Infinispan с последующим программным установлением ссылок и созданием экземпляров компонентов Infinispan. В этом случае компоненты Infinispan будут функционировать в той же виртуальной машине Java (JVM), что и приложение, причем часть памяти приложения из кучи будет зарезервирована для хранения данных узлом грид-платформы.

Использование платформы Infinispan в качестве библиотеки
Рисунок 7.1 - Использование платформы Infinispan в качестве библиотеки

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

Использование Infinispan в качестве удаленной грид-плптформы для хранения данных
Рисунок 7.2 - Использование Infinispan в качестве удаленной грид-плптформы для хранения данных

Децентрализованная архитектура

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

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


Продолжение статьи: Тестирование производительности Infinispan.