Концептуальная модель предметной области#

Концептуальная модель предметной области EDMN#

@startuml
class "UI" as ui
class "Backend" as core
class "Модуль нотификаций" as notif
class "Контроллер" as bd
class "Модуль аутентификации и авторизации пользователя" as auth1
core "1"-up-"1" ui: > отображает состояния
core "1"-up-"1" auth1: > включает
core "1"--"1" notif: > включает
core "1"--"1" bd: > сохраняет и получает состояния
@enduml

Сбор метрик:

@startuml
"Metric collector" -> Источники: Сбор метрик
"Metric collector" -> Prometheus: Сохранение и сбор метрик
@enduml

Изменение конфигурации коллекторов:

@startuml
Backend -> etcd:Редактирвоание конфигураций
"Metric collector" -> etcd:Запись и чтение конфигураций
@enduml

Отображение метрик на дашборде:

@startuml
"WEB UI" -> Backend:Изменение конфигурации метрик
Backend -> Prometheus:Запрос на получение метрик
Backend -> "WEB UI":Метрики
@enduml

Отправка метрик в сторонние системы:

@startuml
"Metric collector" -> Platform V Monitor: Отправка метрик в сторонюю систему
Backend -> Platform V Monitor: Отправка метрик в сторонюю систему
@enduml

Аутентификация пользователей:

@startuml
"Backend" -> "AD(LDAP)": Аутентификация пользователей
"Backend" -> "СУДИР(IAM Proxy)": Аутентификация пользователей
@enduml

Отправка нотификаций:

@startuml
Backend -> SMTP/EVTD/CMC: Отправка нотификаций
@enduml

Концептуальная модель предметной области EDMS#

@startuml
interface "Графический интерфейс" as ui
class "Ядро" as core
class "Модуль нотификаций" as notif
class "Модуль действий аудита" as au
class "Контроллер БД" as bd
class "Модуль аутентификации и авторизации пользователя" as auth1
class "Контроллер развертывания" as deploy
class "Хранилище топологии" as ed
core "1"-up-"*" ed: получает и сохраняет топологии >
core "1"-up-"1" ui: отображает\rсостояния >
core "1"-up-"1" auth1: включает >
core "1"-left-"1" au: получает >
core "1"-right-"1" deploy: осуществляет контроль развертывания >
core "1"--"1" notif: включает >
core "1"--"1" bd: получает и\r сохраняет\rданные >
@enduml

Где,

1…* — может быть установлена одна связь или более; 1…1 — тип связи один к одному.

Концептуальная модель предметной области EMIP#

@startuml
title "Концептуальная модель предметной области"
/' Диаграмма описывает основные объекты, с которыми работает EMIP '/

allowmixing /' позволяет комбинировать разные виды диаграмм '/

rectangle "Система" as Sys
rectangle "Техсервис (ТС)" as TS
rectangle "Событийный ресурс (СР)" as SR
rectangle "Канал" as Chan
rectangle "Другие событийные ресурсы" as Oth
queue "Топик Kafka" as Top
rectangle "Подключение" as Conn
rectangle "Подключение к каналу" as ConnToChan
rectangle "Подключение к другим СР" as ConnToOth
rectangle "Публикация" as Pub
rectangle "Подписка" as Sub
rectangle "Размещение СР на ТС" as Pos
rectangle "API" as API
rectangle "Версия API" as Ver
rectangle "Схема данных" as Sch
rectangle "Event Discovery" as ED
rectangle "Привод деплоя" as Depl
rectangle "Запрос изменений" as Draft
rectangle "Изменение" as Change
rectangle "Изменение API" as ChAPI
rectangle "Изменение версии API" as ChVer
rectangle "Изменение СР" as ChSR
rectangle "Изменение подключения к СР" as ChConn
rectangle "Изменение размещения СР на ТС" as ChPos
rectangle "Конфигурация СР" as ConfSR
rectangle "Конфигурация подключения к СР" as ConfConn
rectangle "Группа пользователей" as Gr

diamond "choice1" as с1
diamond "choice2" as с2
diamond "choice3" as c3
diamond "choice4" as c4
diamond "choice5" as c5

/' блок описывает Системы, Подключения и Событийный ресурсы '/
Sys -up-> Pub: выполняет
Sys -up-> Sub: выполняет
ConnToChan --> с1: подразделяется на
с1 --> Pub
с1 --> Sub
Conn --> с2: подразделяется на
с2 --> ConnToChan
с2 --> ConnToOth
SR --> c3: подразделяется на
c3 --> Chan
c3 --> Oth
Chan --> c4: подразделяется на
c4 --> Top
Chan -up-> ConnToChan: принимает
SR -up-> Conn: принимает
SR -up-> Conn: выполняет

/' блок описывает API, версии API и схемы '/
API -> Ver: включает
Sch -left-> Ver: описывает

/' блок описывает Техсервисы, Размещения и ED '/
SR -> Pos: участвует
TS -> Pos: участвует
TS --> ED: отражается в
SR --> ED: отражается в
Pos --> ED: отражается в

/' блок описывает Изменения '/
Draft -> Change: содержит
Change -> c5: подразделяется на
c5 --> ChAPI
c5 --> ChVer
c5 --> ChSR
c5 --> ChConn
c5 --> ChPos
ChSR --> ConfSR: имплементируются в
ChPos --> ConfSR: имплементируются в
ChSR --> ConfConn: имплементируются в
ChPos --> ConfConn: имплементируются в
ConfSR --> Depl: устанавливается
ConfConn --> Depl: устанавливается
Depl -> TS: устанавливает на
ChAPI -> API: сохраняется в
ChVer -> Ver: сохраняется в
ChSR -> SR: сохраняется в
ChConn -> Conn: сохраняется в
ChPos -> Pos: сохраняется в

/' блок описывает Группы пользователей '/
Sys -> Gr: обладает
TS -> Gr: обладает
Gr -> Draft: создает/управляет

@enduml

Концептуальная модель предметной области EVPC#

@startuml
class "Synapse Cloud Event Streaming Processing" as epf
class "Провайдер метрик мониторинга" as metrics
class "Модуль журналирования" as jrn
class "Ядро" as core
class "Сервис обратного отсчета потоковой обработки" as timer
class "Хранилище состояний агрегации" as storage
class "Оператор EVPC" as operator

operator "0..1"--"0..*" epf: > управляет
epf "1..1"-left-"0..1" jrn: > включает
epf "1..1"-"0..1" metrics: > включает
epf "1..1"--"1" core: > состоит из
epf "1..1"--"0..1" timer: > управляет
epf "1..1"--"0..1" storage: > сохраняет и получает состояния
@enduml

Где:

  • 0…* — ноль или больше связей;

  • 1…* — один или больше связь;

  • 0…1 — нет или только одна связь;

  • 1…1 — только одна связь.

Концептуальная модель предметной области EVPT#

@startuml
class "Сервис обратного отсчета потоковой обработки" as evpt
class "Ядро" as core

evpt "1..1"--"1..1" core: > состоит из
@enduml

Где:

  • 0…* — ноль или больше связей;

  • 1…* — один или больше связь;

  • 0…1 — нет или только одна связь;

  • 1…1 — только одна связь.

Концептуальная модель предметной области EVTA#

@startuml
class "EVTA" as adp
class "Провайдер метрик мониторинга" as metrics
class "Модуль журналирования" as jrn
class "Ядро" as core
class "Файлы конфигурации" as cfg
class "EVTA (оператор)" as operator

operator "0..1"--"0..*" adp: > управляет
adp " 1"-left-"0..1" jrn: > включает
adp "1"-"0..1" metrics: > включает
adp "1"--"1" core: > состоит из
adp "1"--"*" cfg: > использует
@enduml

Концептуальная модель предметной области EVTD#

@startuml
class "АС-клиент" as client
class "Класс-перехватчик" as intrcptr
class "Kafka-client" as kfk
class "Клиентский плагин" as plugin
class "Де/сериализатор" as serial
 
client "1"-right-"1..n" kfk: > включает
kfk "1"-right-"0..n" intrcptr: > включает
kfk "1"--"0..n" plugin: > включает
kfk "1"--"0..1" serial: > включает
@enduml

Схема 1. Концептуальная модель предметной области с Kafka-клиентом

@startuml
class "Сценарии управления" as pipeline
class "Брокер Apache Kafka" as apache
 
pipeline "1..n"-right-"1..n" apache: > администрирует
@enduml

Схема 2. Концептуальная модель предметной области для управления брокерами Apache Kafka

Концептуальная модель предметной области EVTP#

@startuml
class "Хранилище топологии" as zk
class "Кластер" as clus
class "Job Manager" as jm
class "Task Manager" as tm
class "Модуль аудита" as au
class "Сервис потоковой обработки событий" as job

clus "0..*"--"1" zk: > сохраняет и получает конфигурацию
clus "1"--"1..*" jm: > состоит из
clus "1"--"1..*" tm: > состоит из
jm "1"--"1..*" tm: > управляет
jm "1"--"0..1" au: > включает
tm "1"--"0..1" au: > включает
tm "1..*"--"0..*" job: > исполняет
@enduml

Где:

  • 0…* — ноль или больше связей;

  • 1…* — один или больше связь;

  • 0…1 — нет или только одна связь;

  • 1…1 — только одна связь.