MyLab.ProtocolStorage.Client
1.1.2
See the version list below for details.
dotnet add package MyLab.ProtocolStorage.Client --version 1.1.2
NuGet\Install-Package MyLab.ProtocolStorage.Client -Version 1.1.2
<PackageReference Include="MyLab.ProtocolStorage.Client" Version="1.1.2" />
paket add MyLab.ProtocolStorage.Client --version 1.1.2
#r "nuget: MyLab.ProtocolStorage.Client, 1.1.2"
// Install MyLab.ProtocolStorage.Client as a Cake Addin #addin nuget:?package=MyLab.ProtocolStorage.Client&version=1.1.2 // Install MyLab.ProtocolStorage.Client as a Cake Tool #tool nuget:?package=MyLab.ProtocolStorage.Client&version=1.1.2
MyLab.ProtocolStorage
Ознакомьтесь с последними изменениями в журнале изменений.
Обзор
MyLab.ProtocolStorage
- хранилище протоколов. Обеспечивает хранение и поиск событий протоколов.
Протокол - упорядоченная во времени последовательность событий, неизменняемых со временем.
Событие протокола - сущность произвольного содержания за исключением служебных полей.
Состав решения:
API
-REST-API
для получения доступа к функциям хранилища;indexer
- индексатор событий протокола. Разработан на базе MyLab.Search.Indexer;searcher
- поисковик событий протокола. Разработан на базе MyLab.Search.Searcher.
Сценарии
Ведение протокола
Ведение протокола осуществляется следующим образом:
- клиент (служба, ведущая протокол) обращается к
API хранилища протоколов
и отправляет объект, описывающий событие, которое необходимо зафиксировать в протоколе; API хранилища протоколов
помещает объект события в очередь;- клиент продолжает свою работу;
indexer
забирает объект события и индексирует его вElasticsearch
.
Поиск по протоколу
Поиск по протоколу осуществляется следующим образом:
- служба, предоставляющая протокол клиенту:
- определяет содержание выборки по субъекту. Например, для обычного пользователя - только записи, принадлежание ему, а для администратора - записи всех пользователей;
- запрашивает у
API хранилища протоколов
токен поиска с указанием ограничений по субъекту; - передаёт токен поиска клиенту;
- клиент, делает запрос поиска с параметрами поиска и токеном поиска в
API хранилища протоколов
и получает выборку событий протокола.
Протокол
Протокол - абстракция, объединяющая события одного типа. Фактически, в хранящемся виде протокол представляет из себя индекс или поток в Elasticsearch
. Через API хранилища протоколов
возможно только добавление новых событий в протокол. Для очистки протокола необходимо использовать поток и подходы по их чистке.
API хранилища протоколов
подерживает любое количество протоколов без предварительного их создания. Протокол создаётся в момент добавления в него первого события.
Событие протокола
Событие протокола - объект, содержащий реквизиты бизнес-события, необходимые для участия в условиях выборки и для обеспечения состава выбранных данных. Проиндексированное событие не изменяется со временем.
Служебные поля:
id
- идентификатор события. Если не указан, устанавилвается случайный GUID в формате 32 символа (без разделителей) с нижнем регистре. Например:b6738a45784f4fb1b7b15d747e1c72fb
;subject
- субъект события. Например, идентификатор пользователя;datetime
- дата и время возникновения события. Если не указано, устанавливается текущие дата и время.
Все служебные поля необязательны.
Поиск
Подробнее обо всех возможностях поиска тут.
Результаты выборки по умолчанию сортируются в порядке сначала более свежие по дате+времени, указанным в событиях протокола.
Предустановленные фильтры
Фильтр by-id
Фильтр по идентификатору события.
Аргументы:
id
- идентификатор события;
Фильтр by-subject
Фильтр по субъекту.
Аргументы:
subject
- идентификатор субъекта;
Фильтр by-dt
Фильтр по дате+времени, указанным в событиях.
Аргументы:
from
- больше или равно указанным дате+времениto
- меньше указанных даты+времени
Развёртывание
В данном разделе описывается вариант развёртывания на базе Docker
с применением docker-compose
.
Пример docker-compose.yml
:
version: '3.2'
services:
test-indexer:
container_name: test-indexer
image: ghcr.io/mylab-search-fx/protocol-storage-indexer:latest
environment:
MQ__Host: rabbitmq-host
MQ__User: your-mq-username-here
MQ__Password: your-mq-password-here
ES__Url: http://elasticsearch-host:9200
Indexer__MqQueue: your-queue-name
Indexer__EsIndexNamePrefix: test-
test-searcher:
container_name: mps-searcher
image: ghcr.io/mylab-search-fx/protocol-storage-searcher:latest
environment:
ES__Url: http://elasticsearch-host:9200
Searcher__Token__ExpirySec: 10
Searcher__Token__SignKey: your-sign-key-here
Searcher__EsIndexNamePrefix: test-
test-api:
container_name: test-api
image: ghcr.io/mylab-search-fx/protocol-storage-api:latest
environment:
MQ__Host: rabbitmq-host
MQ__User: your-mq-username-here
MQ__Password: your-mq-password-here
MQ__DefaultPub__RoutingKey: your-queue-name
API__List__indexer__Url: http://test-indexer
API__List__searcher__Url: http://test-searcher
Конфигурация
Конфигурация indexer
MQ
- параметры подключения к RabbitMQ (подробнее)Host
- хост подключения;VHost
- виртуальный хостPort
- порт. 5672 - по умолчанию;User
- имя пользователя;Password
- пароль;
ES
- параметры подключения кElasticsearch
Url
- url подключения кElasticsearch
Indexer
- настройуки индексатора (подробнее)MqQueue
- имя очереди в RabbitMQ для входящих сообщений индексации;EsIndexNamePrefix
- префикс, который будет добавляться к имени индексаElasticsearch
всех индексов (будет переведён в нижний регистр);EsIndexNamePostfix
- постфикс, который будет добавляться к имени индексаElasticsearch
всех индексов (будет переведён в нижний регистр).
Больше возможностей по настройке индексатора тут.
Конфигурация searcher
ES
- параметры подключения кElasticsearch
Url
- url подключения кElasticsearch
Searcher
- настройуки поисковика (подробнее):Token
- настройки использования токенов:ExpirySec
- (опционально) время жизни токена в секундах;SignKey
- текстовый ключ подписи токена. Должен быть не меньше 16 байт;EsIndexNamePrefix
- префикс, который будет добавляться к имени индексаElasticsearch
всех индесов поисковика;EsIndexNamePostfix
- постфикс, который будет добавляться к имени индексаElasticsearch
всех индексов поисковика;Debug
- флаг, определяющий добавление отладочной информации о поиске в Elasticsearch (подробнее об отладке).
Больше возможностей по настройке поисковика тут.
Конфигурация api
MQ
- параметры подключения к RabbitMQ (подробнее)Host
- хост подключения;VHost
- виртуальный хостPort
- порт. 5672 - по умолчанию;User
- имя пользователя;Password
- пароль;
API
- настройки подключения к другим API (подробнее)List
- список конфигураций подключенийindexer
- параметры подключения к индексаторуUrl
- url индексатора
searcher
- параметры подключения к поисковикуUrl
- url поисковика
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- MyLab.ApiClient (>= 3.15.25)
- MyLab.Search.SearcherClient (>= 1.8.7)
- Newtonsoft.Json (>= 13.0.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on MyLab.ProtocolStorage.Client:
Package | Downloads |
---|---|
MyLab.TaskApp
.NET Core task-application framework |
GitHub repositories
This package is not used by any popular GitHub repositories.