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" />
<PackageVersion Include="MyLab.ProtocolStorage.Client" Version="1.1.2" />
<PackageReference Include="MyLab.ProtocolStorage.Client" />
paket add MyLab.ProtocolStorage.Client --version 1.1.2
#r "nuget: MyLab.ProtocolStorage.Client, 1.1.2"
#:package MyLab.ProtocolStorage.Client@1.1.2
#addin nuget:?package=MyLab.ProtocolStorage.Client&version=1.1.2
#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- параметры подключения кElasticsearchUrl- url подключения кElasticsearch
Indexer- настройуки индексатора (подробнее)MqQueue- имя очереди в RabbitMQ для входящих сообщений индексации;EsIndexNamePrefix- префикс, который будет добавляться к имени индексаElasticsearchвсех индексов (будет переведён в нижний регистр);EsIndexNamePostfix- постфикс, который будет добавляться к имени индексаElasticsearchвсех индексов (будет переведён в нижний регистр).
Больше возможностей по настройке индексатора тут.
Конфигурация searcher
ES- параметры подключения кElasticsearchUrl- 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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.