пятница, 31 октября 2014 г.

03. ZeroMQ: "Параллельный трубопровод" (Parallel Pipeline). Задача для суперкомпьютеров.

Теперь попробуем разобраться с более удивительными вещами. (Начало здесь)



Рассмотрим топологию:


Процесс Ventilator - ставит задачи, которые будут решаться в параллельно выполняемых процессах Worker.
Процесс Worker - рабочий процесс, выполняющий поставленную задачу.
Процесс Sink - сборщик результатов от процессов Worker.

Считаем, что рабочие процессы типа Worker работают зверски быстро. Наверное, используя квантовые графические чипы с сигнальными процессорами, объединенными в нейронную сеть.

Практические задачи, которые в первую очередь приходят в голову:
- проверка натуральных чисел "на простоту";
- преобразование изображений к нужному формату;
- генерация биткоинов;
- ...

02. ZeroMQ: схема "Издатель - Подписчик" (Publisher-Subscriber).

Задача: (начало здесь)


Автоматическая метеостанция измеряет температуру, атмосферное давление и скорость ветра. Результаты измерений время от времени (например, после завершения цикла измерений) передаются "всем заинтересованным лицам".
Кого-то интересует всё, кому-то нужна температура, кого-то волнует только скорость ветра.




Пишем код метеостанции (), то есть, сервер-издатель.


Код сервера: 

00. ZeroMQ и Delphi. Файлы .pas для программирования. Файлы .dll для готового приложения.

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



Примечание:
1. При разработке рекомендуется использовать debug - версии библиотек. Однако, они не будут работать, если на компьютере не установлена соответствующая версия MS Visual Studio. То есть, такое приложение не запустится на компьютере без установленной MS VS нужной версии. Для распространения готовой программы следует использовать release - версию библиотек.
2. Для поставки пользователю готовой программы, следует также обеспечить инсталляцию рантайм библиотек MS VS соответствующей версии. Например: "Распространяемые пакеты Visual C++ для Visual Studio 2013".

1. Файлы .dll. Дата: 21.11.2014.

Версии: libzmq - 4.2.0.,  czmq - 3.0.1.
Компилятор: C++ MS VS 2013 CE Upd 4. Исполнение: в Windows XP и более новых.
Примечание: MS VS 2008 более не используется, т.к. czmq.dll  все равно в Win2K не будет работать: в ней используется отсутствующий в данной ОС метод API.
Ссылка для скачивания варианта Debug.
Ссылка для скачивания варианта Release.

Использование: распаковать в каталог, доступный приложению.
При разработке рекомендуется использовать debug - версии библиотек.

2. Файлы .pas. Дата: 28.03.2016.

Версии: zmq_h.pas - 1.0.1, czmq_h.pas - 1.0.1.
Изменен файл zmq_utils.pas.
Дата обновления – 28.03.2016. Использование: Delphi2007.
Ссылка для скачивания.
Использование: для компиляции приложения подключить к проекту.

PS: Не забываем, что для приложений, созданных в MS VS 2013, требуются "Распространяемые пакеты Visual C++ для Visual Studio 2013".

PS: Не забываем, что для приложений, созданных в MS VS 2013, требуются "Распространяемые пакеты Visual C++ для Visual Studio 2013".




01. ZeroMQ - "сокеты на стероидах"

ZeroMQ (ZMQ) - библиотека обмена сообщениями. 


Быстрая, компактная, удобная. Бесплатная.

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

ZMQ – кроссплатформенная библиотека. Реализована для множества операционных систем.
ZMQ написана на «чистом С». И именно "сишный" интерфейс  API позволил реализовать связь с ней практически из любого языка программировании. Ссылка на список: http://zeromq.org/bindings:_start

ZMQ - это не просто транспорт. Это - инструмент для создания сетевой архитектуры.
ZMQ позволяет в рамках одного приложения создать и отладить модель сложной сетевой архитектуры. Реализуется это очень просто: с помощью многонитевого приложения, когда отдельная нить имитирует отдельный процесс.
В ZMQ встроены средства буферизации сообщений. ZMQ, будучи реализована асинхронной, может работать как в синхронном, так и в асинхронном режиме.
У ZeroMQ пропускная способность выше, чем у TCP/IP, хотя ZeroMQ работает over TCP/IP...Поискал - "каким же образом?" ...нашел кое-какое описание, вроде специальной упаковки сообщений ZMQ в пакеты tcp.