Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обмен данными между своими процессами / 25 сообщений из 109, страница 1 из 5
19.03.2018, 09:48
    #39616643
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
Есть служба, которая запускает несколько процессов, которым она будет передавать данные (объекты размером около 10кб). Обратно передавать ничего не надо. Для этого есть несколько технологий:
1. File Mapping
2. Named Pipes
3. WM_COPYDATA

Передача данных будет высокоинтенсивная. Какая технология подойдет лучше по вашему мнению?
...
Рейтинг: 0 / 0
19.03.2018, 10:01
    #39616649
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrb,

ну ты просто попробуй все три, да сравни.
...
Мэилслоты ещё, самый простой способ, имхо.
...
Рейтинг: 0 / 0
19.03.2018, 10:07
    #39616651
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
чччД, спасибо кэп
...
Рейтинг: 0 / 0
19.03.2018, 10:20
    #39616654
Vizit0r
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
оконные сообщения самые медленные.

так что 1 или 2 + можно по сети кидаться, в локалхосте это очень быстро происходит.
...
Рейтинг: 0 / 0
19.03.2018, 10:36
    #39616659
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrbЕсть служба, которая запускает несколько процессов, которым она будет передавать данные (объекты размером около 10кб). Обратно передавать ничего не надо. Для этого есть несколько технологий:
1. File Mapping
2. Named Pipes
3. WM_COPYDATA

Передача данных будет высокоинтенсивная. Какая технология подойдет лучше по вашему мнению?

MMF
...
Рейтинг: 0 / 0
19.03.2018, 11:19
    #39616674
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrbЕсть служба, которая запускает несколько процессов, которым она будет передавать данные (объекты размером около 10кб). Обратно передавать ничего не надо. Для этого есть несколько технологий:
1. File Mapping
2. Named Pipes
3. WM_COPYDATA

Передача данных будет высокоинтенсивная. Какая технология подойдет лучше по вашему мнению?
я бы TCP/IP использовал - удобно и универсально
...
Рейтинг: 0 / 0
19.03.2018, 11:25
    #39616677
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
Насчет MMF, я не тестил, но винт при моих объемах (сотни объектов в секунду по >10кб) может сдохнуть быстро. Или нет?
...
Рейтинг: 0 / 0
19.03.2018, 11:26
    #39616679
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
Работает сервис 247.
...
Рейтинг: 0 / 0
19.03.2018, 11:32
    #39616682
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrbПередача данных будет высокоинтенсивная. Какая технология подойдет лучше по вашему мнению?
Более принципиальный вопрос - как именно должны передаваться данные:
а) непосредственно от процесса к процессу (2, 3)
б) опосредованно через доп. буферы (1 и сокеты).
В первом случае возникает проблема синхронизации готовности, второй может быть медленнее.
...
Рейтинг: 0 / 0
19.03.2018, 11:38
    #39616688
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
Соколинский Борис, в этом и вопрос как именно
Я знаю, что нужно сервису передать блок памяти процессу , а что он будет с ним делать - до фонаря.
сервис должен контролить процессы на живучесть, и их перезапускать по необходимости.
Для общего понимания, я хочу потоки перевести на отдельные процессы, так как в рамках ОДНОГО процесса(службы), они со своей задачей не справляются, вот и стал вопрос в поиске буферов
...
Рейтинг: 0 / 0
19.03.2018, 11:42
    #39616689
Дегтярев Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrb,

так не далеко и до разнесения по разным хостам
как вариант, с заделом на будущее, использовать для передачи данных очереди сообщений, а контролировать живучесть сервисов и операционка может
...
Рейтинг: 0 / 0
19.03.2018, 11:43
    #39616690
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrbЕсть служба, которая запускает несколько процессов, которым она будет передавать данные (объекты размером около 10кб). Обратно передавать ничего не надо. Для этого есть несколько технологий:
1. File Mapping
2. Named Pipes
3. WM_COPYDATA

Передача данных будет высокоинтенсивная. Какая технология подойдет лучше по вашему мнению?
Подойдет лучше по каким критериям? Приведен только один - высокая интенсивность. Он реально один или еще есть?
...
Рейтинг: 0 / 0
19.03.2018, 11:46
    #39616692
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
ну я, ну и гарантия доставки
...
Рейтинг: 0 / 0
19.03.2018, 11:47
    #39616694
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
Дегтярев Евгений, а перезапускать их тоже ОС будет?
...
Рейтинг: 0 / 0
19.03.2018, 11:48
    #39616695
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrbОбратно передавать ничего не надо
cptngrbну и гарантия доставки
...
Рейтинг: 0 / 0
19.03.2018, 11:50
    #39616697
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
чччД, я имею ввиду технологию)))
...
Рейтинг: 0 / 0
19.03.2018, 12:00
    #39616706
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrbСоколинский Борис, в этом и вопрос как именно
Я знаю, что нужно сервису передать блок памяти процессу , а что он будет с ним делать - до фонаря.
сервис должен контролить процессы на живучесть, и их перезапускать по необходимости.
Для общего понимания, я хочу потоки перевести на отдельные процессы, так как в рамках ОДНОГО процесса(службы), они со своей задачей не справляются, вот и стал вопрос в поиске буферов Если скорость взаимодействия некритична, наверное MMF.
...
Рейтинг: 0 / 0
19.03.2018, 12:07
    #39616709
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
У меня система видеонаблюдения,
разрезана на несколько сервисов - собственно сервис приёма и обработки видеопотоков,
сервис архивации видеопотоков, сервис веб-доступа к видеопотокам и архивам

Как ты понимаешь, всё это высоконагруженное.
Взаимодействие реализовано через TCP/IP посредством библиотеки RealThinClient

Всё это спокойно летает на i5 на трёх десятках камер.

Я даже не представляю, что у тебя там за данные сервисы обрабатывают
...
Рейтинг: 0 / 0
19.03.2018, 12:09
    #39616711
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrbну я, ну и гарантия доставки
Опа. А где должна находиться точка определения гарантии доставки - в передатчике или в приемнике?
...
Рейтинг: 0 / 0
19.03.2018, 12:09
    #39616712
Дегтярев Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrbДегтярев Евгений, а перезапускать их тоже ОС будет?

почему нет?
...
Рейтинг: 0 / 0
19.03.2018, 12:11
    #39616714
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrbНасчет MMF, я не тестил, но винт при моих объемах (сотни объектов в секунду по >10кб) может сдохнуть быстро. Или нет?MMF это не только физические файлы
частный случай - shared memory, вообще диск никак не трогает (ну если своп не учитывать)
...
Рейтинг: 0 / 0
19.03.2018, 12:11
    #39616715
Дегтярев Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
defecatorЯ даже не представляю, что у тебя там за данные сервисы обрабатывают
+
хотелось бы больше контекста

зы
ТС, варианты оптимизаций существующего решения рассмотрены?
...
Рейтинг: 0 / 0
19.03.2018, 12:12
    #39616717
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
cptngrb...нужно сервису передать блок памяти процессу , а что он будет с ним делать - до фонаря...
...ну и гарантия доставки...

Так смешно.
Корреспондент получил сообщение, и тебе до фонаря, что он там с нима делает?
Ну, ладно.

Пошли ему еще одно сообщение. Если он с первым еще ничего не успел сделать,
сообщение чудесным образом встанет в чудесным образом появившуюся очередь.
Пока очередь не заполнится. Ту придется либо ждать, когда очередь рассосется,
либо прекратить передачу сообщений (отбрасывать их), других вараинтов нет.
...
Рейтинг: 0 / 0
19.03.2018, 12:19
    #39616723
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
defecator, В итоге все уперлось в запись в БД Oracle. При работе с одним клиентом (одна oci.dll) и 50 потоками, она не успевает все укладывать. Решил попробовать, для теста, разнести на несколько клиентов запись в БД.
...
Рейтинг: 0 / 0
19.03.2018, 12:25
    #39616724
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными между своими процессами
Дегтярев Евгений, не особо видны эти самые варианты оптимизации, может и есть другие способы. Просто пробую варианты
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Обмен данными между своими процессами / 25 сообщений из 109, страница 1 из 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]