Skip to content
Snippets Groups Projects
Commit 498acc45 authored by Дмитрий Кольцов's avatar Дмитрий Кольцов Committed by Alexander Tolstoy
Browse files

feat(plugins): add "how to" for plugin creation

parent fa957b3c
No related branches found
No related tags found
1 merge request!579feat(plugins): add "how to" for plugin creation
Pipeline #54360 passed
......@@ -49,6 +49,7 @@ Picodata — это распределенная система промышле
#### Разработка приложений {: #app_development }
* [Создание плагина](tutorial/create_plugin.md)
* [Управление плагинами](tutorial/plugins.md)
* [Использование внешних коннекторов к Picodata](connectors_index.md)
......
......@@ -261,11 +261,58 @@ Picodata происходит по принципу кооперативной
### Плагин (plugin) {: #plugin }
Плагин — это набор кода, расширяющий функциональность Picodata. Он является полностью независимой и атомарной единицей (т.е. может быть независимо от остальных плагинов подключен, отключен, и использован вместе с любым другим набором плагинов).
Плагин — это набор кода, расширяющий функциональность Picodata. Он
является полностью независимой и атомарной единицей (т.е. может быть
независимо от остальных плагинов подключен, отключен, и использован
вместе с любым другим набором плагинов).
Каждый плагин предоставляет конкретную законченную функцию, например дополнительные SQL-команды, UI-интерфейс, коннектор HTTP и т.д.
Каждый плагин предоставляет конкретную законченную функцию, например
дополнительные SQL-команды, UI-интерфейс, коннектор HTTP и т.д.
Плагины в Picodata работают глобально во всем кластере, т.е. развертываются на каждому его узле. Управление жизненным циклом плагина организовано с помощью [миграций](#migration).
Плагины в Picodata работают глобально во всем кластере, т.е.
развертываются на каждому его узле. Управление жизненным циклом плагина
организовано с помощью [миграций](#migration).
#### Миграции {: #migration }
Применительно к плагинам, под _миграцией_ в Picodata понимается
управление служебной схемой данных [плагина](#plugin) при помощи
SQL-команд. Миграции выполняются специальной командой. Каждая миграция —
это набор [DML](#dml)- и [DDL](#ddl)-команд внутри файла с расширением
*.db. Различают два вида миграции:
- `UP` — команды для развертывания плагина в кластере
- `DOWN` — команды для корректного удаления плагина из кластера
Файлы миграции определяются в [манифесте](#manifest) плагина.
#### Манифест {: #manifest }
Каждый плагин в Picodata обязательно содержит _манифест_ — файл в
формате YAML (manifest.yaml) c описанием плагина, списком его сервисов и
их конфигурации, а также списком необходимых [миграций](#migration).
#### Сервис {: #service }
Сервис в плагине представляет собой некоторый программный код на языке
Rust, который может быть инстанцирован на одном или нескольких тирах и
обладает жизненным циклом и состоянием. Технически сервис представляет
собой реализацию trait’a Service и является набором callback’ов (которые
определены явно, контрактом trait’a) а также некоторого состояния
(которое определяет разработчик). Сервис может декларировать
конфигурацию. Сервисы объединяются в плагин при помощи
[манифеста](#manifest).
#### Директории плагина {: #plugin_path }
В контексте разработки и управления плагинами важно придерживаться
установленной схемы директорий:
- `plugin-dir` — параметр запуска Picodata, устанавливающий корневую
директорию для плагинов (например, `build`)
- `plugin_path `— путь к файлам плагина, последовательно состоящий из
корневой директории плагинов, имени плагина и его версии (например,
`build/weather_cache/0.1.0`)
## Процессы и алгоритмы {: #processes_and_algorithms }
......@@ -337,15 +384,6 @@ _Присоединение инстанса_ близко по смыслу к
Актуализация снапшотом поддерживается только для Raft, но не для Tarantool. Она требуется, когда на raft-лидере отсутствуют нужные записи в raft-журнале. Если аналогичная ситуация происходит с WAL Tarantool, пользователю не остается выбора кроме как делать [ребутстрап](#bootstrap) инстанса.
### Миграция плагинов {: #migration }
Под _миграцией_ в Picodata понимается управление служебной схемой данных [плагина](#plugin) при помощи SQL-команд. Миграции выполняются специальной командой. Каждая миграция — это набор [DML](#dml)- и [DDL](#ddl)-команд внутри файла с расширением *.db. Различают два вида миграции:
- `UP` — команды для развертывания плагина в кластере
- `DOWN` — команды для корректного удаления плагина из кластера
Файлы миграции определяются в манифесте [плагина](#plugin).
## Общие концепции {: #concepts }
### Отказоустойчивость {: #failsoft }
......
This diff is collapsed.
......@@ -51,6 +51,7 @@ nav:
- tutorial/ldap.md
- tutorial/audit_log.md
- Разработка приложений:
- tutorial/create_plugin.md
- tutorial/plugins.md
- Внешние коннекторы:
- Оглавление: connectors_index.md
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment