Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ DDP Backend — это серверная часть платформы, реа
* Выполняет валидацию токенов доступа локально, используя кэшированные ключи подписи.
* Подключается к Redis для координации очереди задач.
* Подключается к PostgreSQL для хранения и управления данными.
* Подключается к ClickHouse, если он настроен, для чтения хранящихся в нём данных.

### DDP Worker

Expand All @@ -56,6 +57,7 @@ DDP Worker — это компонент для выполнения фонов
* Использует Redis Streams для получения задач из очередей.
* Подключается к PostgreSQL для чтения и обновления данных.
* Интегрируется с внешними инфраструктурными сервисами для выполнения операций.
* Переносит данные из PostgreSQL в ClickHouse, если он настроен.

### Dex

Expand Down Expand Up @@ -104,6 +106,24 @@ PostgreSQL — это основная реляционная база данн
PostgreSQL может быть установлен в составе модуля DDP для тестовых и демонстрационных целей. В промышленной эксплуатации рекомендуется использование выделенных инстансов PostgreSQL.
{{< /alert >}}

### ClickHouse

ClickHouse — это хранилище для больших объёмов данных, например истории изменений свойств сущностей.

{{< alert level="info" >}}
ClickHouse подключается опционально: он может быть установлен в составе модуля DDP либо подключён как внешний инстанс. Без него платформа работает, но зависящие от него возможности недоступны: например, не сохраняется история изменений свойств сущностей. Подробнее — в разделе [«ClickHouse»](../../install/#clickhouse).
{{< /alert >}}

Основные функции:

* Хранение больших объёмов записей.
* Обслуживание запросов на выборку из этих данных.

Технические характеристики:

* Наполняется DDP Worker, который переносит в него данные из PostgreSQL.
* Принимает подключения DDP Backend и DDP Worker по нативному протоколу ClickHouse.

## Описание сетевых взаимодействий

![traffic-flows](../images/functional-architecture/ddp-architecture-diagram-traffic-flows.png)
Expand All @@ -121,6 +141,8 @@ PostgreSQL может быть установлен в составе модул
* DDP Backend ↔ PostgreSQL (TCP/5432): Backend выполняет операции чтения и записи постоянных данных.
* DDP Worker ↔ Redis (TCP/6379): Worker получает задачи из очередей Redis Streams и использует распределенные блокировки.
* DDP Worker ↔ PostgreSQL (TCP/5432): Worker обновляет данные в базе после выполнения задач.
* DDP Backend ↔ ClickHouse (TCP/9000, опционально): Backend читает данные, которые хранятся в ClickHouse.
* DDP Worker ↔ ClickHouse (TCP/9000, опционально): Worker переносит в ClickHouse данные из PostgreSQL и удаляет из него данные объектов, которые в платформе уже удалены.

### Интеграция с внешними сервисами

Expand Down
13 changes: 13 additions & 0 deletions content/documentation/admin/architecture/workers.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,19 @@ export WORKER_MAX_TASKS=15
- Возможность отслеживания прогресса выполнения.
- Стабильность работы интерфейса.

## Фоновые операции с данными в ClickHouse

Если подключён [ClickHouse](../../install/#clickhouse), воркеры дополнительно переносят в него данные из PostgreSQL и убирают лишнее. Так, например, обслуживается [история изменений свойств сущностей](../../../user/catalog/#история-свойств):

- перенос новых записей об изменениях из PostgreSQL в ClickHouse;
- перестроение индексов очереди в PostgreSQL после переноса большого объёма изменений;
- удаление истории сущностей и свойств, которых больше нет;
- удаление истории, вышедшей за срок хранения.

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

Параметры переноса задаются в секции `clickhouse.replication` настроек модуля: размер и периодичность переноса, перестроение индексов. [Срок хранения истории](../../../user/catalog/#хранение-истории) и периодичность очистки — в секции `clickhouse.propertyHistory`.

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

При необходимости увеличения производительности системы можно:
Expand Down
67 changes: 67 additions & 0 deletions content/documentation/admin/install.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ weight: 11

Deckhouse Development Platform (DDP) можно установить двумя способами: с [внешними инстансами](#установка-с-внешними-инстансами) PostgreSQL и Redis (подключение к уже развёрнутым базам данных вне кластера) или с [внутренними инстансами](#установка-с-внутренними-инстансами) (развёртывание PostgreSQL и Redis внутри кластера). Внешние инстансы рекомендуются для production, внутренние подходят для тестов и пилотной эксплуатации.

Дополнительно платформа может использовать [ClickHouse](#clickhouse) — хранилище для больших объёмов данных. По умолчанию он отключён.

## Установка с внутренними инстансами

Для установки DDP включите модуль `development-platform` в вашем кластере Kubernetes под управлением Deckhouse Kubernetes Platform. Для этого можно использовать [ModuleConfig](/products/kubernetes-platform/documentation/v1/reference/api/cr.html#moduleconfig) с минимальным количеством настроек:
Expand Down Expand Up @@ -151,3 +153,68 @@ spec:
database: "0"
password: secure_redis_password
```

## ClickHouse

ClickHouse — хранилище для больших объёмов данных, например [истории изменений свойств сущностей](../../user/catalog/#история-свойств). По умолчанию ClickHouse не развёртывается и не подключается — платформа работает без него, но зависящие от него возможности остаются недоступными.

ClickHouse можно развернуть внутри кластера в составе модуля либо подключить внешний инстанс. Для промышленной эксплуатации используйте внешний инстанс.

### Внутренний инстанс ClickHouse

Для развёртывания ClickHouse внутри кластера укажите `mode: internal` и не задавайте параметр `host`:

```yaml
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: development-platform
spec:
enabled: true
version: 1
settings:
rbac:
superAdminEmail: admin@deckhouse.io
security:
secretKey: "16charssecretkey"
clickhouse:
mode: internal
database: ddp # Название базы данных, создаётся при первом запуске сервера.
username: default # Имя пользователя для подключения.
password: clickhouse_password # Пароль, с которым создаётся сервер в кластере.
image: registry.example.com/clickhouse/clickhouse-server:24.3 # (опционально) образ из приватного registry.
```

В этом режиме платформа разворачивает один экземпляр ClickHouse с постоянным хранилищем (PersistentVolumeClaim размером `10Gi`) и сама создаёт базу данных при первом запуске.

### Внешний инстанс ClickHouse

Для использования внешнего инстанса ClickHouse укажите `mode: external` и параметры подключения:

```yaml
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
name: development-platform
spec:
enabled: true
version: 1
settings:
rbac:
superAdminEmail: admin@deckhouse.io
security:
secretKey: "16charssecretkey"
clickhouse:
mode: external
host: clickhouse.example.com # Имя хоста или IP-адрес сервера ClickHouse.
port: 9000 # Порт нативного протокола ClickHouse (по умолчанию 9000).
database: ddp # Название базы данных.
username: ddp_user # Имя пользователя для подключения.
password: secure_password # Пароль для подключения.
```

{{< alert level="warning" >}}
Создайте базу данных до подключения внешнего инстанса: платформа применяет миграции схемы, но саму базу данных не создаёт.
{{< /alert >}}

Доставку данных из PostgreSQL в ClickHouse и последующую очистку выполняют воркеры платформы, поэтому для переноса данных нужен хотя бы один запущенный воркер. Параметры доставки задаются в секции `clickhouse.replication`, [срок хранения истории свойств](../../user/catalog/#хранение-истории) и периодичность очистки — в секции `clickhouse.propertyHistory`; значения по умолчанию подходят для большинства установок. Подробнее о воркерах — в разделе [«Воркеры»](../architecture/workers/).
15 changes: 15 additions & 0 deletions content/documentation/release-notes/v1.7.0.ru.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
title: v1.7.0
weight: 890
description: Заметки о выпуске v1.7.0 — история изменений свойств сущностей и поддержка ClickHouse.
---

## Новые возможности

### Каталог

Добавлена история изменений свойств сущностей и просмотр «Свойства на момент времени». По умолчанию история хранится не менее 180 дней, срок настраивается. Подробнее — в разделе [«История свойств»](../../user/catalog/#история-свойств).

### Установка

Добавлена поддержка ClickHouse: он развёртывается в составе модуля или подключается как внешний инстанс и хранит большие объёмы данных, например историю изменений свойств сущностей. Подробнее — в разделе [«ClickHouse»](../../admin/install/#clickhouse).
Loading
Loading