Масштабирование платформы АрхиГраф

Платформа АрхиГраф может масштабироваться с использованием нескольких механизмов:

  1. Масштабирование сервисов платформы с помощью Kubernetes
  2. Масштабирование хранилищ данных под управлением платформы
  3. Создание нескольких кластеров АрхиГраф и организация межкластерного взаимодействия
Варианты масштабирования платформы АрхиГраф

Рассмотрим каждый из этих механизмов.

1. Масштабирование сервисов платформы с помощью Kubernetes

Компоненты платформы АрхиГраф, обслуживающие запросы клиентов, представляют собой веб-сервисы (REST, GraphQL, SPARQL) и процессы, обрабатывающие запросы, поступающие через очереди RabbitMQ и Kafka. Масштабирование таких сервисов легко организовать с помощью Kubernetes. Каждый сервис представляет собой Docker-контейнер, который может быть запущен в подах Kubernetes и отмасштабирован на нужное количество реплик в зависимости от нагрузки. Процессы, обрабатывающие очереди Kafka, могут масштабироваться за счет чтения сообщений из разных partitions. Все экземпляры сервиса работают с одними и теми же хранилищами. Такое масштабирование позволяет управлять нагрузкой на сами сервисы. Если увеличение ресурсов, выделенных сервисам, не дает желаемого результата, нужно переходить к управлению производительностью хранилищ.

2. Масштабирование хранилищ данных под управлением платформы

Платформа АрхиГраф представляет собой средство виртуализации данных, которые физически могут храниться в различных источниках: реляционных, колоночных, документ-ориентированных базах данных. На уровне платформы происходит настройка распределения объектов данных между хранилищами (привязка классов онтологии к хранилищам). Таким образом, можно выбрать для объектов каждого класса наиболее подходящий тип хранилища: для временных рядов - реляционную СУБД, для каталога продукции со множеством свойств - документ-ориентированную СУБД, и т.д. Каждое из этих хранилищ в свою очередь может быть кластеризовано. Таким образом, АрхиГраф обеспечивает прозрачный доступ ко множеству хранилищ данных, каждое из которых масштабируется естественным для него способом. Это позволяет добиться хранения практически неограниченного объема данных под управлением платформы, гибко управлять производительностью доступа к данным за счет построения индексов, сегментации и использования других встроенных механизмов хранилищ.

3. Создание нескольких кластеров АрхиГраф и организация межкластерного взаимодействия

Еще один уровень масштабирования платформы - создание нескольких кластеров АрхиГраф. Кластеры могут быть выделены по территориальному или организационному принципу - например, каждый кластер может обслуживать какое-либо предприятие холдинга. Можно разделить кластеры и по функциональному принципу - в зависимости от того, для решения каких задач предназначены хранящиеся в них данные. Взаимодействие между кластерами можно организовать двумя способами:

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