Изменения

Перейти к навигации Перейти к поиску

Транспорт

12 631 байт добавлено, 04:22, 26 ноября 2019
В целях оптимизации, ''Событие'' помещается во внутреннюю FIFO очередь ''Транспорта'' только тогда, когда по нему приходит значение, отличное от предыдущего. Это позволяет существенно сократить объем пересылаемых данных, и избежать отправку повторных значений.
Отдельная пересылка индивидуального ''События'' так же была бы крайне не эффективной. Объем "полезных" данных по ''Событию'' был бы меньше или сравним с накладными расходами самого протокола. Поэтому для отправки события формируются ''События'' объединяются в ''Пакеты'' ("''Package''"). На количество ''Событий'', которые попадут в один ''Пакет'' отправки влияет настройка '''Период отдыха'''. [[File:SystemMenu.png]] => [[File:MonitoringMenu.png]] => DPAhost \ DPAserver \ Транспорт \ WCF По умолчанию, '''Период отдыха''' составляет 1 секунду, то есть между отправками ''Пакетов'' должно пройти не менее 1 секунды. Именно в течение этого времени внутренняя FIFO очередь Транспорта будет наполняться ''Событиями'', прежде чем будет сформирован и отправлен очередной ''Пакет''. [[File:TransportRelaxOption.png]] Отследить работу Транспорта можно по счетчикам производительности: [[File:SystemMenu.png]] => [[File:MonitoringMenu.png]] => DPAhost \ DPAserver \ Транспорт \ WCF => Счетчики производительности Выбрать счетчики '''Package Size''', '''Sent packages total per second'''. [[File:TransportMainCounters.png]] В данном примере ''Пакет'' в среднем содержит от 50 до 150 ''Событий''. Отправка одного ''Пакета'' происходит каждую секунду. Инициатором отправки данных по Транспорту DPA всегда выступает DPA сервер. DPA хост выступает в роли пассивного получателя ''Пакетов''.
= Протоколы =
= Настройка =WCF ==WCF протокол Транспорта DPA - это бинарный протокол, использующий стек TCP/IP.В настройках WCF протокола два ключевых параметра - IP-адрес и порт подключения. DPA сервер использует эти параметры, чтобы установить соединение к получателю ''Событий'', которым, как правило, выступает DPA хост. В качестве IP-адреса получателя можно указать localhost (если DPA хост и DPA сервер установлены на одну машину), а так же сетевое имя. По умолчанию используется TCP-порт 45618. WCF протокол используется в DPA по умолчанию, как основной протокол. WCF обеспечивает максимально быструю передачу от DPA сервера к DPA хосту. Хотя WCF протокол не имеет встроенных средств гарантии доставки, частично этот вопрос решается архитектурой Транспорта, что описано далее в этой статье. == MSMQ ==Протокол MSMQ использует Microsoft Message Queue для доставки ''Событий'' получателю. <span style="color:red"><b>Внимание!</b></span> Перед тем как настраивать Транспорт DPA на использование протокола MSMQ, убедитесь, что компоненты Microsoft Message Queue установлены в операционной системе. [[File:MsmqFeaturesOn.png]] Установить компоненты Microsoft Message Queue можно выполнив следующую команду с привилегиями администратора: <pre>Dism /online /Enable-Feature /FeatureName:MSMQ-Container /FeatureName:MSMQ-Server</pre> Протокол MSMQ использует приватные очереди на локальной или удаленной машине. Очередь на удаленной машине применяется при развертывании DPA сервера и DPA хоста на разных машинах. В таком случае используется очередь на машина DPA хоста. Для настройки протокола MSMQ необходимо указать два ключевых параметра - имя машины и имя очереди. В качестве имени машины возможно использовать сетевое имя, доменное имя, IP-адрес или символ "'''.'''" для локальной очереди. <span style="color:red"><b>Внимание!</b></span> Перед тем как настраивать Транспорт DPA на использование протокола MSMQ, создайте приватную очередь и настройте права доступа. Учетная запись, из под которой работает служба DPA сервера, должна иметь права на запись в очередь. Учетная запись, из под которой работает служба DPA хоста, должна иметь права на извлечение из очереди. Следующий скрипт PowerShell создает приватную очередь и назначает права доступа для доменного пользователя: <pre>PS C:\> New-MsmqQueue -Name "QueueName" -QueueType PrivatePS C:\> Get-MsmqQueue -Name "QueueName" -QueueType Private | Set-MsmqQueueAcl -UserName "DOMAIN\User" -Allow Peek,Receive,Send</pre> Обратите внимание, для использования Транспорта MSMQ между DPA сервер и DPA хост необходимо использовать очередь с предопределенным именем:  <b><pre>Xtensive.Project109.Host.DPA.Queue</pre></b> MSMQ имеет встроенные механизмы гарантии доставки посылок получателю. = Варианты настройки =''В каких случаях требуется добавить дополнительный (второй, третий и т.д.) Транспорт?''<br/>Во-первых, дополнительный Транспорт может потребоваться при передаче данных DPA сервера в стороннюю систему.Во-вторых, допустимо настроить один DPA сервер для отправки данных в два и более DPA хоста. Тогда на каждый DPA хост требуется настроить отдельный экземпляр Транспорта.  ''Можно ли для конкретного события выбрать Транспорт, который будет использован для его передачи?''<br/>Да, пример настройки:<br/>[[File:SystemMenu.png]] => [[File:MonitoringMenu.png]] => DPAhost \ DPAserver \ Драйвера \ <Драйвер> \ Events \ <Событие> \ Транспорт Выбрать нужный Транспорт и нажать "Сохранить": [[File:EventSelectTransport.png]]  ''Можно ли для события указать более одного Транспорта?''<br/>Да, в таком случае копии данных по этому событию будут отправляться в каждый выбранный Транспорт.  ''Можно ли настроить второй Транспорт для обмена между DPA сервер и DPA хост?''<br/><span style="color:red">Крайне не рекомендуется настраивать более одного Транспорта между конкретными экземплярами DPA сервера и DPA хоста. Это может привести к дублированию данных, искажению порядка событий и другим нежелательным эффектам.</span>  ''Как изменить параметры Транспорта?''<br/>Параметры Транспорта возможно изменить только через файл конфигурации '''DpaServer.config'''.<br/>:1. Остановите службу DPA сервера.<pre>net stop DpaServer</pre>:2. Файл конфигурации находится по следующему пути:<pre>C:\ProgramData\X-tensive\DPA\Config\DpaServer.config </pre>:3. Обязательно создайте резервную копию файла конфигурации.:4. Настройки транспорта находятся в узле ''root \ transports'':<pre><?xml version="1.0"?><root xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ver="1"> <drivers> ... </drivers> <states> ... </states> <transports> <transport transportIdentifier="0b75081d-210c-4b01-885b-154e8104503e" name="WCF" transportType="WcfTransport" restPeriod="00:00:01" resendingPeriod="00:00:15"> <wcfTransport ipAddress="localhost" port="45618" /> </transport> <transport transportIdentifier="a241a03e-a2dd-48b4-8611-e15023b07b26" name="MES-queue" transportType="MsmqTransport" restPeriod="00:00:01" resendingPeriod="00:00:15"> <msmqTransport machine="localhost" queue="MES-queue" /> </transport> </transports></root></pre>:5. Измените настройки и сохраните файл конфигурации.:6. Запустите службу DPA сервера.<pre>net start DpaServer</pre> 
= Гарантия доставки =
Если по какой-то причине отправка данных по Транспорту не возможна, например, DPA хост временно недоступен, идет установка обновления и т.д., данные не будут утеряны. ''События'' и ''Пакеты'' будут накапливаться во внутренней FIFO очереди на отправку. В зависимости от количества драйверов, подключенных к DPA серверу, а так же в зависимости от частоты изменения данных по ''Событиям'', очередь позволяет вместить данные от нескольких часов до нескольких дней работы.
 
[[File:transportBuffering.png]]
 
 
При восстановлении связи накопленные данные будут переданы, очередь будет опустошена:
 
[[File:transportEmptying.png]]
 
 
<span style="color:red"><b>Внимание!</b></span> Для работы внутренней FIFO очереди используется оперативная память. Данные не выгружаются в файловую систему, базу данных или другие хранилища. Если до отправки сообщений получателю DPA сервер будет остановлен, содержимое очереди будет утеряно.
 
= Диагностика =
На что нужно обратить внимание в первую очередь при возникновении проблем с получением данных по Транспорту из DPA сервера:
:1. Лицензия должна быть установлена и активна
:2. Убедиться, что ''События'' активны:
[[File:SystemMenu.png]] => [[File:MonitoringMenu.png]] => DPAhost \ DPAserver \ Драйвера \ <Драйвер> \ Events \ <Событие>
:3. Убедиться, что Транспорт для ''Событий'' настроен корректно:
[[File:SystemMenu.png]] => [[File:MonitoringMenu.png]] => DPAhost \ DPAserver \ Драйвера \ <Драйвер> \ Events \ <Событие> \ Транспорт
:4. При использовании протокола WCF убедиться, что IP-адрес и порт получателя установлены корректно:
[[File:SystemMenu.png]] => [[File:MonitoringMenu.png]] => DPAhost \ DPAserver \ Транспорт \ WCF
:5. Используйте счетчики производительности Транспорта для анализа проблем доставки и производительности:
[[File:SystemMenu.png]] => [[File:MonitoringMenu.png]] => DPAhost \ DPAserver \ Транспорт \ WCF => Счетчики производительности

Навигация