Алгоритм работы AGDataLoader — различия между версиями

Материал из TK
Перейти к: навигация, поиск
 
(не показаны 3 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
DataLoader может загружать данные с AutoGRAPH Server всех версий. Для ускорения загрузки данных DataLoader может выполнять разбивать большой список приборов на блоки и отправлять запросы по ним параллельно.
 
DataLoader может загружать данные с AutoGRAPH Server всех версий. Для ускорения загрузки данных DataLoader может выполнять разбивать большой список приборов на блоки и отправлять запросы по ним параллельно.
 
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">'''Обратите внимание:'''<span style="line-height: 20.7999992370605px; background-color: rgb(238, 238, 238);">&nbsp;если у DataLoader в каталоге данных отсутствуют данные по приборам - то они закачиваются ([[Настройка AGDataLoader|с даты указанной в .config-файле]])&nbsp;до тех пор, пока не буду закачаны все. При большом количестве приборов это может привести к значительной загрузке канала связи и нагрузке на диск.</span><br/></div>
 
<div style="background:#eee;border:1px solid #ccc;padding:5px 10px;">'''Обратите внимание:'''<span style="line-height: 20.7999992370605px; background-color: rgb(238, 238, 238);">&nbsp;если у DataLoader в каталоге данных отсутствуют данные по приборам - то они закачиваются ([[Настройка AGDataLoader|с даты указанной в .config-файле]])&nbsp;до тех пор, пока не буду закачаны все. При большом количестве приборов это может привести к значительной загрузке канала связи и нагрузке на диск.</span><br/></div>
Задержка между <span style="line-height: 20.7999992370605px;">запросами&nbsp;может быть задана как индивидуально для каждого сервера, так и для как значение по умолчанию для всех серверов.</span>
+
Задержка между <span style="line-height: 20.7999992370605px;">запросами&nbsp;может быть задана как индивидуально для каждого сервера, так и как значение по умолчанию для всех серверов.</span>
   
 
== AutoGRAPH Server 3.x ==
 
== AutoGRAPH Server 3.x ==
Строка 7: Строка 7:
 
{| border="0" cellpadding="5" style="width: 100%;"
 
{| border="0" cellpadding="5" style="width: 100%;"
 
|-
 
|-
| style="width: 326px;" | http://wiki.tk-chel.ru/images/f/f3/DataLoader_AGServer3.png<br/>
+
| style="width: 528px;" | http://wiki.tk-chel.ru/images/f/f3/DataLoader_AGServer3.png<br/>
| style="vertical-align: top; width: 1241px;" |
+
| style="vertical-align: top;" |
Аутентификация на AGServer 3.x выполняется с помощью списка приборов (которые хранятся в&nbsp;.ATG-файлах) с их паролями в .ATG-файлах. Алгоритм работы приведет на диаграмме слева. Задержка между запросами&nbsp;может быть задана индивидуально для каждого сервера.
+
Аутентификация на AGServer 3.x выполняется с помощью списка приборов (которые хранятся в&nbsp;.ATG-файлах) с их паролями в .ATG-файлах.<br/>Алгоритм работы приведет на диаграмме слева. Задержка между запросами&nbsp;может быть задана индивидуально для каждого сервера.
   
 
|}
 
|}
Строка 17: Строка 17:
 
{| border="0" cellspacing="0" cellpadding="5" style="width: 100%;"
 
{| border="0" cellspacing="0" cellpadding="5" style="width: 100%;"
 
|-
 
|-
| style="width: 384px;" | http://wiki.tk-chel.ru/images/d/d7/DataLoader_AGServer4.png<br/>
+
| style="width: 531px;" | http://wiki.tk-chel.ru/images/d/d7/DataLoader_AGServer4.png
| style="width: 1189px; vertical-align: top;" |
+
| style="vertical-align: top;" |
<span style="line-height: 20.7999992370605px;">Аутентификация на AGServer 4.x/5.x выполняется с помощью логина и пароля пользователя. Для обеспечения безопасности пароль хранится не&nbsp;в открытом виде, а в виде хэша. Для корректной загрузки данных с AGServer 4.x/5.x необходимо скопировать файл UserSettings.ini из каталога пользователя (которым будет выполняется загрузка данных с сервера) в каталога DataLoader согласно правилу размещения файлов и переименовать UserSettings.ini в логин пользователя. Например, если UserSettings.ini взят у пользователя demo, то его необходимо переименовать в demo.ini - логин пользователя будет взят из имени файла, а хэш пароля для аутентификации - из файла (параметр&nbsp;</span>PassHash).
+
Аутентификация на AGServer 4.x/5.x выполняется с помощью логина и пароля пользователя. Для обеспечения безопасности пароль хранится не&nbsp;в открытом виде, а в виде хэша. Для корректной загрузки данных с AGServer 4.x/5.x необходимо скопировать файл UserSettings.ini из каталога пользователя (которым будет выполняется загрузка данных с сервера) в каталога DataLoader согласно правилу размещения файлов и переименовать UserSettings.ini в логин пользователя. Например, если UserSettings.ini взят у пользователя demo, то его необходимо переименовать в demo.ini - логин пользователя будет взят из имени файла, а хэш пароля для аутентификации - из файла (параметр PassHash).
   
<span style="line-height: 20.7999992370605px;">Алгоритм работы приведет на диаграмме. Первый запрос при запуске сервиса выполняется для получения списка приборов (в отличие от AGServer 3.x не требуется держать актуальным список .ATG-файлов на хосте с DataLoader) и полученный список файлов используется для загрузки данных.</span>
+
Алгоритм работы приведет на диаграмме. Первый запрос при запуске сервиса выполняется для получения списка приборов (в отличие от AGServer 3.x не требуется держать актуальным список .ATG-файлов на хосте с DataLoader) и полученный список файлов используется для загрузки данных.
   
 
|}
 
|}
Строка 27: Строка 27:
 
== Многопоточная загрузка ==
 
== Многопоточная загрузка ==
   
Для ускорения загрузки данных может быть применена многопоточная загрузка данных. Определяющим в данном случае являются два параметра - <span class="marker">&nbsp;batch-size&nbsp;</span> и <span class="marker">&nbsp;thread-count&nbsp;</span>. Первый параметр определяет количество приборов в одном запросе, второй - количество одновременных запросов.
+
Для ускорения загрузки данных может быть применена многопоточная загрузка данных.<br/>Определяющим в данном случае являются два параметра - <span class="marker">&nbsp;batch-size&nbsp;</span> и <span class="marker">&nbsp;thread-count&nbsp;</span>.<br/>Первый параметр определяет количество приборов в одном запросе, второй - количество одновременных запросов.
   
 
{| border="0" cellspacing="0" cellpadding="1" style="width: 100%;"
 
{| border="0" cellspacing="0" cellpadding="1" style="width: 100%;"
 
|-
 
|-
| style="width: 541px;" | http://wiki.tk-chel.ru/images/b/b7/DataLoader_MultiThreading.png<br/><br/>
+
| style="width: 539px;" | http://wiki.tk-chel.ru/images/b/b7/DataLoader_MultiThreading.png
  +
|
| style="vertical-align: top; width: 1048px;" |
 
<span style="line-height: 20.7999992370605px;">Диаграмма с примером работы приведена слева.</span>
+
Диаграмма с примером работы приведена слева.
   
 
На данной диаграмме приведён пример, когда параметр batch-size=100 и thread-count=3. Все требуемые 563 прибора разбиваются на блоки по 100 приборов и каждые три таких блока запросов отправляются на требуемый&nbsp;AGServer одновременно (сначала будет отправлено три запроса по 100 приборов - приборы с 1-го по 300-й). Однако приборов больше, чем thread-count * batch-size, поэтому после завершения всех трёх запросов будет выполнен второй цикл, в котором будут отправлены также три одновременных запроса с тремя блоками, однако приборы там будут с 301-го по 563-й. После завершения и этих трёх запросов - цикл будет повторяться полностью до тех пор, пока все данные не будут закачаны.
 
На данной диаграмме приведён пример, когда параметр batch-size=100 и thread-count=3. Все требуемые 563 прибора разбиваются на блоки по 100 приборов и каждые три таких блока запросов отправляются на требуемый&nbsp;AGServer одновременно (сначала будет отправлено три запроса по 100 приборов - приборы с 1-го по 300-й). Однако приборов больше, чем thread-count * batch-size, поэтому после завершения всех трёх запросов будет выполнен второй цикл, в котором будут отправлены также три одновременных запроса с тремя блоками, однако приборы там будут с 301-го по 563-й. После завершения и этих трёх запросов - цикл будет повторяться полностью до тех пор, пока все данные не будут закачаны.
   
 
Данный алгоритм применяется для серверов всех версий.
 
Данный алгоритм применяется для серверов всех версий.
  +
  +
'''<span class="marker">Внимание:</span>''' большое количество thread-count (больше 10) не имеет смысла, т.к. будет создаваться повышенная нагрузка на удаленный AutoGRAPH Server, что приведёт к замедлению чтения данных с диска и вместо ускорения загрузки будет прямо противоположный эффект.
  +
  +
'''<span class="marker">Внимание:</span>''' большое количество batch-size (больше 500) не имеет смысла, т.к. специфика протокола обмена приведёт к тому, что сервер будет считывать все данные для всех запрошенных приборов в запросе, прежде чем начать отправку данных обратно на DataLoader.
   
 
|}
 
|}

Текущая версия на 00:10, 16 апреля 2015

DataLoader может загружать данные с AutoGRAPH Server всех версий. Для ускорения загрузки данных DataLoader может выполнять разбивать большой список приборов на блоки и отправлять запросы по ним параллельно.

Обратите внимание: если у DataLoader в каталоге данных отсутствуют данные по приборам - то они закачиваются (с даты указанной в .config-файле) до тех пор, пока не буду закачаны все. При большом количестве приборов это может привести к значительной загрузке канала связи и нагрузке на диск.

Задержка между запросами может быть задана как индивидуально для каждого сервера, так и как значение по умолчанию для всех серверов.

AutoGRAPH Server 3.x

DataLoader_AGServer3.png

Аутентификация на AGServer 3.x выполняется с помощью списка приборов (которые хранятся в .ATG-файлах) с их паролями в .ATG-файлах.
Алгоритм работы приведет на диаграмме слева. Задержка между запросами может быть задана индивидуально для каждого сервера.

AutoGRAPH Server 4.x/5.x

DataLoader_AGServer4.png

Аутентификация на AGServer 4.x/5.x выполняется с помощью логина и пароля пользователя. Для обеспечения безопасности пароль хранится не в открытом виде, а в виде хэша. Для корректной загрузки данных с AGServer 4.x/5.x необходимо скопировать файл UserSettings.ini из каталога пользователя (которым будет выполняется загрузка данных с сервера) в каталога DataLoader согласно правилу размещения файлов и переименовать UserSettings.ini в логин пользователя. Например, если UserSettings.ini взят у пользователя demo, то его необходимо переименовать в demo.ini - логин пользователя будет взят из имени файла, а хэш пароля для аутентификации - из файла (параметр PassHash).

Алгоритм работы приведет на диаграмме. Первый запрос при запуске сервиса выполняется для получения списка приборов (в отличие от AGServer 3.x не требуется держать актуальным список .ATG-файлов на хосте с DataLoader) и полученный список файлов используется для загрузки данных.

Многопоточная загрузка

Для ускорения загрузки данных может быть применена многопоточная загрузка данных.
Определяющим в данном случае являются два параметра -  batch-size  и  thread-count .
Первый параметр определяет количество приборов в одном запросе, второй - количество одновременных запросов.

DataLoader_MultiThreading.png

Диаграмма с примером работы приведена слева.

На данной диаграмме приведён пример, когда параметр batch-size=100 и thread-count=3. Все требуемые 563 прибора разбиваются на блоки по 100 приборов и каждые три таких блока запросов отправляются на требуемый AGServer одновременно (сначала будет отправлено три запроса по 100 приборов - приборы с 1-го по 300-й). Однако приборов больше, чем thread-count * batch-size, поэтому после завершения всех трёх запросов будет выполнен второй цикл, в котором будут отправлены также три одновременных запроса с тремя блоками, однако приборы там будут с 301-го по 563-й. После завершения и этих трёх запросов - цикл будет повторяться полностью до тех пор, пока все данные не будут закачаны.

Данный алгоритм применяется для серверов всех версий.

Внимание: большое количество thread-count (больше 10) не имеет смысла, т.к. будет создаваться повышенная нагрузка на удаленный AutoGRAPH Server, что приведёт к замедлению чтения данных с диска и вместо ускорения загрузки будет прямо противоположный эффект.

Внимание: большое количество batch-size (больше 500) не имеет смысла, т.к. специфика протокола обмена приведёт к тому, что сервер будет считывать все данные для всех запрошенных приборов в запросе, прежде чем начать отправку данных обратно на DataLoader.