Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Introduction to ZeroMQ - eSpace TechTalk

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 20 Anzeige
Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Andere mochten auch (16)

Anzeige

Ähnlich wie Introduction to ZeroMQ - eSpace TechTalk (20)

Anzeige

Aktuellste (20)

Introduction to ZeroMQ - eSpace TechTalk

  1. 1. Introduction to ZeroMQ eSpace TechTalks @modsaid
  2. 2. Outline ● Quick Definition ● Creators ● Why ØMQ? ● What the hell is it? ● Patterns ● Demos ● Should it be C? ● Discussion
  3. 3. Quick Definition ● ØMQ (aka ZeroMQ, 0MQ or ZMQ) ● a high-performance asynchronous messaging library ● aimed at use in scalable distributed or concurrent applications. ● It provides a message queue, but unlike message-oriented middleware, a ØMQ system can run without a dedicated message broker. ● The library is designed to have a familiar socket-style API.
  4. 4. Creators - Martin Sústrik ● Martin Sústrik (@sustrik) ● Expert in the field of messaging middle-ware ● Participated in the creation & implementation reference of AMQP standard. ● Founder of the ØMQ project. ● currently is working on integration of messaging technology with OS & Internet stack
  5. 5. Creators - Pieter Hintjens ● Belgian software developer, writer. ● Past president of the Foundation for a Free Information Infrastructure ● Author of Orielly ZeroMQ ● CEO or iMatix
  6. 6. Why ØMQ? ● Moore's Law means more moving pieces ● Cost of Connection is high ● Needed cheaper, fast and reliable connections ● Physics of Software Development
  7. 7. What the hell is it? ● Intelligent socket library for messaging ● Many kinds of connection patterns ● Multiplatform, multi-language (30+: ruby, C, C++, java, python, …. ) ● Fast (8M msg/sec, 30usec latency) ● Small (20K lines of C++ code) ● Distributed ● Open source LGPL (large community)
  8. 8. What the hell is it? (2) ● Socket like API. But better than sockets ● Based on reactor pattern “Event handling pattern for handling service requests delivered concurrently to a service handler by one or more inputs. The service handler then demultiplexes the incoming requests and dispatches them synchronously to the associated request handlers.”
  9. 9. Patterns ● Request – Reply ● Publish-Subscribe ● Push-Pull (pipeline) ● Exclusive Pair
  10. 10. Request-Reply Pattern
  11. 11. Publish-Subscribe Pattern
  12. 12. Pipeline Pattern
  13. 13. Demo ● HelloWorld req-rep ● Weather pub-sub ● Tasks workers (pipeline)
  14. 14. Use Case ● Centralized Logging for rails instances “Several application servers, consolidated logs”
  15. 15. ØMQ Transports ● Threads in one process (inproc://) ● Processes on one box (ipc://) ● Processes on one network (tcp://) ● Multicast group (pgm://)
  16. 16. ØMQ Routing ● Round-robin (REQ, PUSH, DEALER) ● Multicast (PUB) ● Fair-queuing (REP, SUB, PULL, DEALER) ● Explicit addressing (ROUTER) ● Unicast (PAIR)
  17. 17. ØMQ Benefits ● Start with simple / fast language (Python) ● Move to faster language where needed (C) ● Run on arbitrary platforms (Windows, Android) ● Scale to arbitrary sizes (2 cores, 16 cores...) ● No per-core or per-seat licensing ● Easy to experiment and learn
  18. 18. AMQP vs ØMQ ● Centralized (like SVN) ● Family of messaging protocols used through implementations like RabbitMQ, Apache Qpid.. ● Main use cases: transient pubsub distribution and reliable request-reply ● Dozens of pieces doing perhaps a hundred thousand messages per second ● Distributed (like git) ● Messaging library, and tools ● Covers transient pubsub, unreliable request-reply, pipeline, and peer-to-peer. ● Hundreds or thousands of pieces perhaps doing hundreds of millions of messages per second
  19. 19. Why should it have been C? ● C++ was chosen for STL, coding style, destructors, virtual functions ● 5 years old admission: poor choice ● Exception Handling guarantee not failing, but not undefined behavior ● Meant to be infrastructure ● Preventing undefined behavior more important ● More efficient compiled code ● System program ● Recent translation to C, nanomsg (not released yet)
  20. 20. References ● http://zguide.zeromq.org/page:all ● http://en.wikipedia.org/wiki/%C3%98MQ ● http://www.imatix.com/ ● http://www.zeromq.org/docs:welcome-from-amqp ● http://www.rabbitmq.com/blog/tag/zeromq/ ● http://www.250bpm.com/blog:4 (why it should've been C) ● http://nanomsg.org/ (C endeavor) ● http://www.zeromq.org/docs:labs ● http://www.slideshare.net/pieterh/overview-of-zeromq

×