SlideShare ist ein Scribd-Unternehmen logo
1 von 18
ØMQ 
Sockets on Steroids
ØMQ / ZeroMQ 
• Библиотека для обмена сообщениями 
• Поддерживает большинство платформ и языков 
• Работает через TCP, IPC, multicast, inproc 
• Простая, быстрая, легковесная
ØMQ Socket 
• Агент, обменивающийся сообщениями 
• Подключается 1-1, 1-N, N-N 
• Имеет тип, определяющий его поведение
Установка соединения 
Socket Socket 
socket.bind 
• tcp://*:5555 
• ipc:///tmp/zqm.sock 
• inproc://socket 
socket.connect 
• можно вызывать bind и connect несколько раз 
• connect разрешен до bind
Передача сообщения 
Socket Socket 
• send • blocking receive 
• non-blocking receive 
• poll (blocking + timeout)
N - 1 
Socket 
Socket Socket 
Socket
1 - N 
Socket 
Socket Socket 
Socket 
1 
2 
3 
4 
5 
*за исключением pub/sub
REQ & REP Sockets 
1 
REQ REP 
2 
1. send 
2. receive 
1. receive 
2. send
# server.rb 
context = ZMQ::Context.new 
socket = context.socket ZMQ::REP 
socket.bind('tcp://*:5555') 
loop do 
socket.recv_string(msg = '') # blocking 
socket.send_string('reply') 
end 
# client.rb 
context = ZMQ::Context.new 
socket = context.socket ZMQ::REQ 
socket.connect('tcp://localhost:5555') 
socket.send_string('request') 
socket.recv_string(msg = '') # blocking
PUSH & PULL Sockets 
send receive 
PUSH PULL
PULL 
PUSH PULL 
PULL 
PUSH 
WORKER 
WORKER 
WORKER 
PUSH 
PUSH 
PULL
PUB & SUB Sockets 
SUB 
PUB SUB 
SUB 
1 
1 
2 
2 
1 2
PUSH 
PULL 
SUB 
PULL 
SUB 
PULL 
PUSH 
WORKER 
WORKER 
WORKER 
PUSH 
PUSH 
PULL 
SUB 
PUB
ROUTER Socket 
REQ 
REQ 
REQ 
MESSAGE 
ROUTER MESSAGE 
MESSAGE
DEALER Socket 
REP 
REP 
REP 
DEALER
Брокер 
Clients Workers 
REQ 
REQ ROUTER DEALER 
REQ 
REP 
REP 
REP
Балансирующий брокер 
Clients Workers 
REQ 
REQ ROUTER ROUTER 
REQ 
REQ 
REQ 
REQ 
WORKER 
QUEUE
ZeroMQ Website 
http://zeromq.org/ 
Ruby ZeroMQ implementation 
github.com/chuckremes/ffi-rzmq

Weitere ähnliche Inhalte

Was ist angesagt?

Eugene Lisitsky Web Sockets
Eugene Lisitsky Web SocketsEugene Lisitsky Web Sockets
Eugene Lisitsky Web Socketsguest092df8
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей АкиньшинCodeFest
 
«Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум» «Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум» Гузель Рахимова
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Ontico
 
Tarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковTarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковFuenteovejuna
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Fuenteovejuna
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей ФедоровCodeFest
 
Скорость с доставкой до пользователя
Скорость с доставкой до пользователяСкорость с доставкой до пользователя
Скорость с доставкой до пользователяAnatoliy Orlov
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй DockerBadoo Development
 
Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...
Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...
Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...Fwdays
 
AnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmarkAnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmarkNaim Shafiev
 
Модификации KVM для работы в кластере, Андрей Шетухин
Модификации KVM для работы в кластере, Андрей ШетухинМодификации KVM для работы в кластере, Андрей Шетухин
Модификации KVM для работы в кластере, Андрей ШетухинOntico
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Andrey Smirnov
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted PythonHighLoad2009
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooBadoo Development
 
Масштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейМасштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейEugene Aseev
 

Was ist angesagt? (19)

Eugene Lisitsky Web Sockets
Eugene Lisitsky Web SocketsEugene Lisitsky Web Sockets
Eugene Lisitsky Web Sockets
 
Андрей Акиньшин
Андрей АкиньшинАндрей Акиньшин
Андрей Акиньшин
 
«Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум» «Сетевые протоколы для веб разработчика — выжимаем максимум»
«Сетевые протоколы для веб разработчика — выжимаем максимум»
 
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
Микросервисы: опыт использования в нагруженном проекте / Вадим Мадисон (М-Тех)
 
Tarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий ВостриковTarantool Silverbox, Юрий Востриков
Tarantool Silverbox, Юрий Востриков
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей Федоров
 
Скорость с доставкой до пользователя
Скорость с доставкой до пользователяСкорость с доставкой до пользователя
Скорость с доставкой до пользователя
 
Мониторь, автоматизируй Docker
Мониторь, автоматизируй DockerМониторь, автоматизируй Docker
Мониторь, автоматизируй Docker
 
Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...
Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...
Yevgen Lysenko "Practical experience of using AWS Lambda in a high-loaded PHP...
 
Анализ трафика
Анализ трафикаАнализ трафика
Анализ трафика
 
Применяем Ansible
Применяем AnsibleПрименяем Ansible
Применяем Ansible
 
AnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmarkAnyEvent::HTTPBenchmark
AnyEvent::HTTPBenchmark
 
Модификации KVM для работы в кластере, Андрей Шетухин
Модификации KVM для работы в кластере, Андрей ШетухинМодификации KVM для работы в кластере, Андрей Шетухин
Модификации KVM для работы в кластере, Андрей Шетухин
 
Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)Анатомия веб-сервиса (РИТ-2014)
Анатомия веб-сервиса (РИТ-2014)
 
Smirnov Twisted Python
Smirnov Twisted PythonSmirnov Twisted Python
Smirnov Twisted Python
 
Архитектура хранения фотографий в Badoo
Архитектура хранения фотографий в BadooАрхитектура хранения фотографий в Badoo
Архитектура хранения фотографий в Badoo
 
Масштабирование Блокчейн Сетей
Масштабирование Блокчейн СетейМасштабирование Блокчейн Сетей
Масштабирование Блокчейн Сетей
 
Сокеты
СокетыСокеты
Сокеты
 

Andere mochten auch

ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The AnswerIan Barber
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQpieterh
 
You're Going To Need A Bigger Toolbox
You're Going To Need A Bigger ToolboxYou're Going To Need A Bigger Toolbox
You're Going To Need A Bigger ToolboxGareth Rushgrove
 
Message Queues for Web Applications
Message Queues for Web ApplicationsMessage Queues for Web Applications
Message Queues for Web ApplicationsGareth Rushgrove
 
Introduction to ZeroMQ
Introduction to ZeroMQIntroduction to ZeroMQ
Introduction to ZeroMQYiHung Lee
 
Introduction to ZeroMQ - eSpace TechTalk
Introduction to ZeroMQ - eSpace TechTalkIntroduction to ZeroMQ - eSpace TechTalk
Introduction to ZeroMQ - eSpace TechTalkMahmoud Said
 
Zeromq anatomy & jeromq
Zeromq anatomy & jeromqZeromq anatomy & jeromq
Zeromq anatomy & jeromqDongmin Yu
 
RabbitMQ: Message queuing that works
RabbitMQ: Message queuing that worksRabbitMQ: Message queuing that works
RabbitMQ: Message queuing that worksCodemotion
 
ZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsJames Dennis
 
Software Architecture over ZeroMQ
Software Architecture over ZeroMQSoftware Architecture over ZeroMQ
Software Architecture over ZeroMQpieterh
 
FOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQFOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQpieterh
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message BrokerMartin Toshev
 
The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP Eberhard Wolff
 
High powered messaging with RabbitMQ
High powered messaging with RabbitMQHigh powered messaging with RabbitMQ
High powered messaging with RabbitMQJames Carr
 

Andere mochten auch (20)

ZeroMQ
ZeroMQZeroMQ
ZeroMQ
 
zeromq
zeromqzeromq
zeromq
 
RabbitMq
RabbitMqRabbitMq
RabbitMq
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The Answer
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQ
 
You're Going To Need A Bigger Toolbox
You're Going To Need A Bigger ToolboxYou're Going To Need A Bigger Toolbox
You're Going To Need A Bigger Toolbox
 
Message Queues for Web Applications
Message Queues for Web ApplicationsMessage Queues for Web Applications
Message Queues for Web Applications
 
Introduction to ZeroMQ
Introduction to ZeroMQIntroduction to ZeroMQ
Introduction to ZeroMQ
 
Introduction to Heroku Postgres
Introduction to Heroku PostgresIntroduction to Heroku Postgres
Introduction to Heroku Postgres
 
Introduction to ZeroMQ - eSpace TechTalk
Introduction to ZeroMQ - eSpace TechTalkIntroduction to ZeroMQ - eSpace TechTalk
Introduction to ZeroMQ - eSpace TechTalk
 
Zeromq anatomy & jeromq
Zeromq anatomy & jeromqZeromq anatomy & jeromq
Zeromq anatomy & jeromq
 
RabbitMQ: Message queuing that works
RabbitMQ: Message queuing that worksRabbitMQ: Message queuing that works
RabbitMQ: Message queuing that works
 
ZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 LabsZeroMQ: Super Sockets - by J2 Labs
ZeroMQ: Super Sockets - by J2 Labs
 
Software Architecture over ZeroMQ
Software Architecture over ZeroMQSoftware Architecture over ZeroMQ
Software Architecture over ZeroMQ
 
RabbitMQ
RabbitMQRabbitMQ
RabbitMQ
 
FOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQFOSDEM 2011 - 0MQ
FOSDEM 2011 - 0MQ
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message Broker
 
The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP
 
RabbitMQ Operations
RabbitMQ OperationsRabbitMQ Operations
RabbitMQ Operations
 
High powered messaging with RabbitMQ
High powered messaging with RabbitMQHigh powered messaging with RabbitMQ
High powered messaging with RabbitMQ
 

Ähnlich wie Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq

Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Ontico
 
Пишем свой протокол поверх UDP или платформа потокового видео с нуля на милли...
Пишем свой протокол поверх UDP или платформа потокового видео с нуля на милли...Пишем свой протокол поверх UDP или платформа потокового видео с нуля на милли...
Пишем свой протокол поверх UDP или платформа потокового видео с нуля на милли...Ontico
 
Get inside stage2 new
Get inside stage2 newGet inside stage2 new
Get inside stage2 newInfoTeCS
 
Технополис: Сетевой стек
Технополис: Сетевой стекТехнополис: Сетевой стек
Технополис: Сетевой стекDmitry Samsonov
 
Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Cisco Russia
 
В поисках эффективного middleware
В поисках эффективного middlewareВ поисках эффективного middleware
В поисках эффективного middlewareAlexander Gerasiov
 
Networks in the cloud on OpenStask: problems we face and their solution
Networks in the cloud on OpenStask: problems we face and their solutionNetworks in the cloud on OpenStask: problems we face and their solution
Networks in the cloud on OpenStask: problems we face and their solutionVadim Ponomarev
 
Введение в Akka
Введение в AkkaВведение в Akka
Введение в AkkaZheka Kozlov
 

Ähnlich wie Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq (9)

Эффективное %s с ZMQ
Эффективное %s с ZMQЭффективное %s с ZMQ
Эффективное %s с ZMQ
 
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
 
Пишем свой протокол поверх UDP или платформа потокового видео с нуля на милли...
Пишем свой протокол поверх UDP или платформа потокового видео с нуля на милли...Пишем свой протокол поверх UDP или платформа потокового видео с нуля на милли...
Пишем свой протокол поверх UDP или платформа потокового видео с нуля на милли...
 
Get inside stage2 new
Get inside stage2 newGet inside stage2 new
Get inside stage2 new
 
Технополис: Сетевой стек
Технополис: Сетевой стекТехнополис: Сетевой стек
Технополис: Сетевой стек
 
Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.Оптимизация мобильного трафика с Cisco ASR 5000.
Оптимизация мобильного трафика с Cisco ASR 5000.
 
В поисках эффективного middleware
В поисках эффективного middlewareВ поисках эффективного middleware
В поисках эффективного middleware
 
Networks in the cloud on OpenStask: problems we face and their solution
Networks in the cloud on OpenStask: problems we face and their solutionNetworks in the cloud on OpenStask: problems we face and their solution
Networks in the cloud on OpenStask: problems we face and their solution
 
Введение в Akka
Введение в AkkaВведение в Akka
Введение в Akka
 

Mehr von Sphere Consulting Inc

Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.Sphere Consulting Inc
 
Anton Shemerey: Refactoring and SOLID principles in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.Anton Shemerey: Refactoring and SOLID principles in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.Sphere Consulting Inc
 
Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.Sphere Consulting Inc
 
Valeriy Prokopchuk: Validators in Migrations.
Valeriy Prokopchuk: Validators in Migrations.Valeriy Prokopchuk: Validators in Migrations.
Valeriy Prokopchuk: Validators in Migrations.Sphere Consulting Inc
 
OpenSource Project. Where to Start? Dmitriy Zaporozhets
OpenSource Project. Where to Start? Dmitriy ZaporozhetsOpenSource Project. Where to Start? Dmitriy Zaporozhets
OpenSource Project. Where to Start? Dmitriy ZaporozhetsSphere Consulting Inc
 
Debugging on Rails. Mykhaylo Sorochan
Debugging on Rails. Mykhaylo SorochanDebugging on Rails. Mykhaylo Sorochan
Debugging on Rails. Mykhaylo SorochanSphere Consulting Inc
 
FormObject For Building Complex Forms. Dmytro Pilugin
FormObject For Building Complex Forms. Dmytro PiluginFormObject For Building Complex Forms. Dmytro Pilugin
FormObject For Building Complex Forms. Dmytro PiluginSphere Consulting Inc
 
Asynchronous Applications in Ruby. Roman Gorel
Asynchronous Applications in Ruby. Roman GorelAsynchronous Applications in Ruby. Roman Gorel
Asynchronous Applications in Ruby. Roman GorelSphere Consulting Inc
 

Mehr von Sphere Consulting Inc (8)

Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.Anton Vasiljev: Continuations in Ruby.
Anton Vasiljev: Continuations in Ruby.
 
Anton Shemerey: Refactoring and SOLID principles in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.Anton Shemerey: Refactoring and SOLID principles in Ruby.
Anton Shemerey: Refactoring and SOLID principles in Ruby.
 
Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.Roman Gorel: Building better APIs on Rails.
Roman Gorel: Building better APIs on Rails.
 
Valeriy Prokopchuk: Validators in Migrations.
Valeriy Prokopchuk: Validators in Migrations.Valeriy Prokopchuk: Validators in Migrations.
Valeriy Prokopchuk: Validators in Migrations.
 
OpenSource Project. Where to Start? Dmitriy Zaporozhets
OpenSource Project. Where to Start? Dmitriy ZaporozhetsOpenSource Project. Where to Start? Dmitriy Zaporozhets
OpenSource Project. Where to Start? Dmitriy Zaporozhets
 
Debugging on Rails. Mykhaylo Sorochan
Debugging on Rails. Mykhaylo SorochanDebugging on Rails. Mykhaylo Sorochan
Debugging on Rails. Mykhaylo Sorochan
 
FormObject For Building Complex Forms. Dmytro Pilugin
FormObject For Building Complex Forms. Dmytro PiluginFormObject For Building Complex Forms. Dmytro Pilugin
FormObject For Building Complex Forms. Dmytro Pilugin
 
Asynchronous Applications in Ruby. Roman Gorel
Asynchronous Applications in Ruby. Roman GorelAsynchronous Applications in Ruby. Roman Gorel
Asynchronous Applications in Ruby. Roman Gorel
 

Roman Kuznietsov: Zeromq: sockets on steroids.Zero mq

  • 1. ØMQ Sockets on Steroids
  • 2. ØMQ / ZeroMQ • Библиотека для обмена сообщениями • Поддерживает большинство платформ и языков • Работает через TCP, IPC, multicast, inproc • Простая, быстрая, легковесная
  • 3. ØMQ Socket • Агент, обменивающийся сообщениями • Подключается 1-1, 1-N, N-N • Имеет тип, определяющий его поведение
  • 4. Установка соединения Socket Socket socket.bind • tcp://*:5555 • ipc:///tmp/zqm.sock • inproc://socket socket.connect • можно вызывать bind и connect несколько раз • connect разрешен до bind
  • 5. Передача сообщения Socket Socket • send • blocking receive • non-blocking receive • poll (blocking + timeout)
  • 6. N - 1 Socket Socket Socket Socket
  • 7. 1 - N Socket Socket Socket Socket 1 2 3 4 5 *за исключением pub/sub
  • 8. REQ & REP Sockets 1 REQ REP 2 1. send 2. receive 1. receive 2. send
  • 9. # server.rb context = ZMQ::Context.new socket = context.socket ZMQ::REP socket.bind('tcp://*:5555') loop do socket.recv_string(msg = '') # blocking socket.send_string('reply') end # client.rb context = ZMQ::Context.new socket = context.socket ZMQ::REQ socket.connect('tcp://localhost:5555') socket.send_string('request') socket.recv_string(msg = '') # blocking
  • 10. PUSH & PULL Sockets send receive PUSH PULL
  • 11. PULL PUSH PULL PULL PUSH WORKER WORKER WORKER PUSH PUSH PULL
  • 12. PUB & SUB Sockets SUB PUB SUB SUB 1 1 2 2 1 2
  • 13. PUSH PULL SUB PULL SUB PULL PUSH WORKER WORKER WORKER PUSH PUSH PULL SUB PUB
  • 14. ROUTER Socket REQ REQ REQ MESSAGE ROUTER MESSAGE MESSAGE
  • 15. DEALER Socket REP REP REP DEALER
  • 16. Брокер Clients Workers REQ REQ ROUTER DEALER REQ REP REP REP
  • 17. Балансирующий брокер Clients Workers REQ REQ ROUTER ROUTER REQ REQ REQ REQ WORKER QUEUE
  • 18. ZeroMQ Website http://zeromq.org/ Ruby ZeroMQ implementation github.com/chuckremes/ffi-rzmq