Перейти к содержанию

API Manager. Мультиарендность

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

Вы можете зарегистрировать домены арендаторов с помощью консоли управления NEOMSA APIM .

Примечание: Когда включена мультиарендность и арендатор становится неактивным в течение длительного периода времени (по умолчанию 30 минут), арендатор выгружается из памяти сервера. После этого он должен снова войти в систему, прежде чем отправлять запросы на сервер.

Вы можете изменить период времени бездействия, заданный по умолчанию, добавьте свойство java -Dtenant.idle.time=<time_in_minutes> в скрипт запуска продукта (./api-manager.sh файл для Linux и api-manager.bat для Windows), как показано ниже:

JAVA_OPTS \

-Dtenant.idle.time=30 \

Архитектура

Многопользовательская архитектура продуктов NEOMSA APIM позволяет разворачивать веб-приложения, веб-сервисы, медиаторы ESB, мэшапы и другие компоненты в среде, которая поддерживает следующие возможности:

  • Изоляция арендатора: у каждого арендатора есть свой собственный домен, недоступный для других арендаторов.

  • Изоляция данных: каждый арендатор может безопасно управлять своими данными в изолированном режиме.

Арендатор — это изолированный домен. Пользователи внутри этого домена могут управлять своими данными и выполнять свои транзакции, не будучи затронутыми действиями, происходящими в других доменах.

Этим доменам выделяется серверное пространство из общего серверного пространства продукта NEOMSA APIM , который называется суперарендатором.

Суперарендатор, как и каждый отдельный арендатор, имеет свой собственный модуль конфигурации и контекста.

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

Отдельный арендатор может выполнять следующие действия в рамках своего модуля конфигурации и контекста:

  • Развертывание артефактов

  • Применение мер безопасности

  • Управление пользователями

  • Управление данными

  • Ограничение количества запросов

  • Кэширование ответов

NEOMSA Carbon предоставляет ряд служб администратора, с привилегиями для управления сервером. Эти службы развернуты в суперарендаторе, и другие арендаторы могут использовать их для управления своими ресурсами. Административные сервисы работают с учётом арендатора, поэтому при использовании любого административного сервиса учитываются привилегии и ограничения, применяемые к клиенту.

Совместное использование ресурсов.

NEOMSA Carbon поддерживает следующий метод распределения ресурсов между арендаторами:

  • Собственная многопользовательская среда: этот метод позволяет всем арендаторам совместно использовать один экземпляр JVM. Этот метод минимизирует накладные расходы.

Политика загрузки арендатора

Lazy loading — это шаблон проектирования, который используется в облачных системах для отсрочки инициализации объекта или артефакта до тех пор, пока он не будет запрошен арендатором или внутренним процессом. В продуктах NEOMSA на основе Carbon 4.6.0 или более поздних версий уже есть возможность задать требуемую политику загрузки арендатора: включив либо Lazy Loading, либо Eager Loading арендаторов. Вы также можете отдельно настраивать политику загрузки для веб-приложений и служб axis2, развернутых в ваших арендаторах, используя настройку GhostDeployment.

Ограничения

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

  • Только суперарендатор может изменять свою конфигурацию, а также добавлять, просматривать и удалять арендаторов.

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

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

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

  • Арендаторы используют транспортные механизмы, предоставленный системой, и не имеют возможности создавать собственные.

Диспетчеризация запросов

В этом разделе описывается, как работает многоарендная архитектура при диспетчеризации запросов.

Когда сервер Carbon получает запрос, сообщение сначала принимается обработчиками и диспетчерами, определенными для конфигурации сервера (суперарендатором). Конфигурация сервера может включать обработчики, реализующие межарендные политики и управление соглашениями об уровне обслуживания (SLA). Например, на этом этапе может применяться диспетчер с приоритетной очередью, обеспечивающий разный уровень качества обслуживания для различных клиентов. После применения соответствующих обработчиков и диспетчеров запрос отправляется арендатору, которому он адресован. Затем применяются диспетчеры и обработчики сообщений, специфичные для этого арендатора.

Следующий пример показывает, как осуществляется отправка сообщений на многопользовательском сервере.

Например, два арендатора с именами foo.com и bar.com могут развернуть службу с именем MyService. Когда эта служба размещена на двух арендаторах, они будут иметь следующие URL-адреса.

http://example.com/t/foo.com/services/MyService http://example.com/t/bar.com/services/MyService

Имя арендатора в URL позволяет определить арендатора, когда сервер Carbon получает сообщение, адресованное определенному клиенту. Также можно настроить запись CNAME в DNS (система доменных имен) в качестве псевдонима для этой информации.

Если запрос адресован службе MyService размещенной на foo.com, сначала применяются обработчики сообщений и диспетчеры суперарендатора, а затем идентифицируется арендатор foo.com по имени в URL. После этого запрос направляется на foo.com, где он будет обработан.

Масштабирование

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