Интеграция с Сервисом межкластерной индексации#
О документе#
В документе приведено описание интеграции продукта Platform V DataSpace (APT) с компонентом Сервис межкластерной индексации (CCIX) продукта Platform V BackEnd (#BD).
Расшифровку основных понятий см. в документе "Термины и определения".
Введение#
Цели интеграции с компонентом Сервис межкластерной индексации продукта Platform V BackEnd (#BD) — обеспечить горизонтальное масштабирование приложений.
Сервис межкластерной индексации обеспечивает управление данными, необходимыми для реализации горизонтального масштабирования Платформы. Более подробную информацию можно получить в документации самого сервиса.
Настройка DataSpace для записи в Сервис межкластерной индексации#
Сервис межкластерной индексации позволяет централизованно использовать данные, находящиеся в разных зональных хранилищах.
Сервис межкластерной индексации можно разметить в описании модели (файле model.xml) следующими способами:
Если индекс состоит из одного поля, необходимо добавить атрибут cci-index="true" к полю (property) или внешней ссылке (reference) класса:
<class name="MyCCIEntity" label="Сущность с cci индексами">
...
<property name="cciProduct" type="String" cci-index="true"/>
<reference name="myCciReference" type="Animal" cci-index="true"/>
<reference name="actualOperation" type="PerformedOperation" label="Операция" cci-index="true"/>
...
</class>
Если индекс составной, необходимо добавить тег
<cci-index>и внутри тега перечислить входящие в индекс поля. Поля, входящие в состав cci-индекса, становятся обязательными.
<cci-index name="my_cci_index">
<property name="id"/>
<property name="name"/>
</cci-index>
Спецификация#
С межзональными индексами нельзя производить следующие действия:
Создавать пустые (не содержащие ни одного поля) индексы.
Указывать не существующие в классе свойства.
Использовать неподходящие типы. Типом поля межзонального индекса может быть: String, UnicodeString, Long, Integer, Short, Byte, а также мягкие ссылки. Нельзя использовать в качестве индекса коллекции. Для embedded-типов поля описываются только явно через тег
<cci-index>.
Для добавления межзонального индекса по идентификатору объекта нужно использовать код, подобный следующему:
<cci-index name="id_cci_index">
<property name="id"/>
</cci-index>
Описание индексации по полям embedded-сущности может выглядеть следующим образом:
<class name="MyCCIEntity" label="">
<property name="name" type="String"/>
<property name="document" type="Document"/>
<cci-index>
<property name="name"/>
<property name="document.address.city"/>
</cci-index>
</class>
<class name="Document" embeddable="true">
<property name="code" type="String"/>
<property name="address" type="Address"/>
</class>
<class name="Address" embeddable="true">
<property name="city" type="String"/>
</class>
Имена межзональных индексов могут вычисляться, но крайне рекомендуется задавать их самостоятельно. Логика создания имени следующая: <Имя таблицы в верхнем регистре>_<Имя первого свойства в составе индекса>. Если в составе индекса имеется одно свойство, то имя сформировано. Иначе для каждого следующего поля в индексе, начинающегося с того же самого свойства в конец добавляется порядковый номер через символ подчеркивания.
Пример использования индексов можно найти во фрагменте ниже:
<class name="MyCCIEntity"...
...
<property name="cciProduct" type="String" cci-index="true"/>
<reference name="myCciReference" type="Animal" cci-index="true"/>
<cci-index>
<property name="myName"/>
<property name="myLabel"/>
</cci-index>
<cci-index>
<property name="id"/>
</cci-index>
...
Для вышеуказанного примера будут сформированы имена:
T_MYCCIENTITY_CCIPRODUCT;
T_MYCCIENTITY_MYNAME_1;
T_MYCCIENTITY_MYCCIREFERENCE;
T_MYCCIENTITY_OBJECTID.
В перечисленных выше именах T_ — префикс имени таблицы в хранилище.
Межзональный индекс по идентификатору – особый случай. Имя поля заменяется на objectId.
Если имена не заданы вручную, то перечень всех имен CCI-индексов можно посмотреть в файле cciIndex.info, который сформируется при выпуске модели и будет находиться рядом с файлом model.xml.
Внимание!
Все сформированные индексы требуется зарегистрировать в Сервисе межкластерной индексации. Для этого необходимо оформить запрос администраторам данного сервиса.
Внимание!
Длина значения CCI-индекса ограничена 100 символами. То есть сумма длин, входящих в CCI-индекс полей, не должна превышать данного значения. Это вызвано ограничениями компонента Прикладной журнал (APLJ) и Сервиса межкластерной индексации (CCIX).
Настройки подключения к Cross Cluster Index#
Подключение к Сервису межкластерной индексации настраивается с помощью следующих параметров:
dataspace.cci.host— URL для подключения к серверу Cross Cluster Index;dataspace.cci.port— Port для подключения к серверу Cross Cluster Index;dataspace.cci.clusterId— название шардов Cross Cluster Index;dataspace.plugin.cci.useStubCCIServer— включение режима "заглушки", когда вся функциональность CCI будет выключена.
Данные параметры можно задать следующими способами:
В рамках Helm-инсталляции прописать следующие их значения в value.yaml в секции overrideProperties (значения необходимо заменить на актуальные):
overrideProperties: dataspace: plugin: cci: useStubCCIServer: false cci: cciUrl: "<адрес сервера cci>" cciPort: "8080" cciClusterId: "shard_name"В рамках инсталляции при помощи Deploy Tools (CDJE) также можно выполнить явное переопределение параметров приложения в конфигурационных файлах
dataspace-*.confдля каждого сервиса DataSpace. Пример dataspace-core-modelName.conf:core.cm.properties.dataspace.cci.host=<адрес сервера cci> core.cm.properties.dataspace.cci.port=8080 core.cm.properties.dataspace.cci.clusterId=SHARD-ID core.cm.properties.dataspace.plugin.cci.useStubCCIServer=false
Для включения режима "заглушки" CCI необходимо использовать параметр dataspace.plugin.cci.useStubCCIServer=true.