0. Идальго 122 10.08.16 22:07 Сейчас в теме

Пример механизма параллельной обработки данных

В статье представлена простая идея реализации параллельной обработки данных, базирующаяся на использовании фоновых заданий, а также паре регламентных заданий, которые осуществляют управление очередью. Материал статьи может быть полезен в случаях, когда вы хотите создать собственную систему управления параллельно выполняющимися заданиями, но в силу каких-то причин вам не подходит механизм регламентных заданий (например, если нужно ограничить число одновременно выполняющихся регламентных заданий, соблюдать очерёдность и приоритет их выполнения и т.п.). Статья ориентирована на клиент-серверный вариант работы 1С8, а приложенная конфигурация выполнена на обычных формах.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. starik-2005 1971 13.08.16 10:31 Сейчас в теме
А блокировку соседних заданий по критическому коду можно в 1С сделать?
2. Идальго 122 13.08.16 13:51 Сейчас в теме
(1) starik-2005, думаю, что реализовать паузу в запуске соседних заданий совсем просто, но вот для того, чтобы уже выполняющиеся задания стопарнуть на время - тут сложнее )))
3. starik-2005 1971 13.08.16 19:34 Сейчас в теме
(2) тогда Вам следует прочитать это.
4. Идальго 122 14.08.16 19:16 Сейчас в теме
(3) starik-2005, спасибо, я прочитал. Я подобные вещи тоже давно использую (и этого всегда 100% хватало). В вышеприведенном комментарии я немного другое имел в виду, ведь если делать так, как предложено у вас, то для того, чтобы метод стал универсальным, то нужно либо в каждом задании прописывать подобный код, либо делать вызов какой-то общей процедуры, которая будет проверять мьютекс. Однако это не совсем универсально и удобно, т.к. этот код проверки выполняется каждым из заданий, а я подразумевал использование более универсальной штуки, которая бы подключалась к каждому из заданий и получала текущий статус его выполнения, и в случае ошибки, как-то это дело переваривала. Ну и в целом, у меня же здесь просто пример - основа, на которую можно посложнее штучки навернуть (кому нужно).
5. artbear 1158 18.08.16 12:50 Сейчас в теме
(0) А почему не взял готовый пример подсистемы от автора статьи с Хабра?
Код реально рабочий, проверен на нескольких системах в разных организациях.
Код открыт на Гитхабе, есть поддержка продукта.

Тем более, что в подсистеме использованы приемы, позволяющие решить некоторые возникающие проблемы с фоновыми заданиями.

Зачем тратить время на написание велосипедов?

6. Идальго 122 18.08.16 17:48 Сейчас в теме
(5) artbear, Ну там немного по-другому сделано, но суть конечно та же самая. Вообще у всех подобных решений реализация очень похожа. Кроме того, в той статье сделано вроде на УФ, а мне нужно было на обычных. Да и Господи там писать то на пару-тройку часов, когда логику представляешь (собственно её я и подглядел на гитхабе, хотя потом ещё кучу мест нашел). Мучиться с разбором чужого кода не хотелось, да и просто интересно было))) Плюс, у меня же раскидывание по приоритетам и свободным потокам и т.п. есть, а на гитхабе не было (точно не помню уже). Да и вообще моя для понимания механизма, или как основа для более сложного продукта попроще и поудобнее будет, как мне кажется.
8. artbear 1158 19.08.16 17:47 Сейчас в теме
(6) (7)
Если организовывать гарантированную доставку/выполнение, то пятью/двадцатью минутами не обойдешься.

Задумайтесь о следующем: как правило, все усложнения алгоритма/ПО возникают не из воздуха, а как результат решения каких-то бизнес-задач.
Например, в продукте Гитхаба решались задачи - гарантированная доставка, выполнение в высоконагруженной среде, блокировки/конфликты и т.п.

ЗЫ напомню, что я не автор продукта/статьи на Гитхабе/Хабре.
10. Идальго 122 19.08.16 21:05 Сейчас в теме
(8) artbear, Да никаких в той обработке (на гитхабе) особых штучек в плане работы с нагруженностью и гарантированностью нет. Как и в моей обработке, там есть ограничение на количество потоков и, вроде была удалялка зависших заданий. У меня же по части распределения задач - больше настроек. Работа по разруливанию блокировок(н-р регистров) и т.п., как я полагаю, также должна осуществляться со стороны кода запущенной обработки (т.е. это не менеджер очереди делает). Что касается сложности кода и времени разработки - обработки почти одинаковые, хотя мне мой код конечно понятнее))) Давайте закончим уже про ту обработку (обработки конечно похожи, но отличия тем не менее есть и я их описывал выше)?
9. artbear 1158 19.08.16 17:49 Сейчас в теме
(6)
Кроме того, в той статье сделано вроде на УФ, а мне нужно было на обычных

В "той статье" на УФ сделано буквально 2 простые формы, практически без кода или только вызов серверных методов. Весь остальной код - это серверный код, работающий как в ОФ, так и в УФ.
7. starik-2005 1971 18.08.16 20:22 Сейчас в теме
Я как-то многопоточный код замутил через произвольный алгоритм и функцию общего модуля "ВыполнитьАлгоритм". Если разобраться в механизме, то никаких подсистем не надо - все делается на коленке за двадцать минут.
11. MikeLetto 69 21.03.17 14:08 Сейчас в теме
Выходит ошибка: {ВнешняяОбработка.ФоновоеЗаданиеСИндикацией.Форма.Форма.Форма(58)}: Метод объекта не обнаружен (ВыгрузитьОстатки)
ОбработкаОбъект.ВыгрузитьОстатки(СтруктураПараметров, АдресРезультата);

Версия БСП: "2.1.1.18"
12. Идальго 122 23.03.17 07:09 Сейчас в теме
(11)
Выходит ошибка: {ВнешняяОбработка.ФоновоеЗаданиеСИндикацией.Форма.Форма.Форма(58)}: Метод объекта не обнаружен (ВыгрузитьОстатки)
ОбработкаОбъект.ВыгрузитьОстатки(СтруктураПараметров, АдресРезультата);

Версия БСП: "2.1.1.18"


Эта ошибка у вас к моей программке, вроде, не имеет никакого отношения. В моей программе нет ВыгрузитьОстатки и т.п.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Ведущий программист 1С
Омск
зарплата от 70 000 руб. до 110 000 руб.
Полный день

Программист 1С
Екатеринбург
зарплата до 120 000 руб.
Полный день

Консультант-аналитик 1С
Рязань
зарплата до 80 000 руб.
Полный день

Программист 1С
Рязань
зарплата от 90 000 руб.
Полный день