Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×
Nächste SlideShare
Wird geladen in …3

Hier ansehen

1 von 34 Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)


Ähnlich wie ZeroMQ in PHP (20)


Aktuellste (20)

ZeroMQ in PHP

  1. 1. Ømq and CakePHP Socket programming brought to your web app
  2. 2. What is Ømq? Intelligent socket library for messaging Incredibly flexible, you can build your own patterns Fast as hell Fault tolerant Language agnostic
  3. 3. What is not Ømq? A message queue, it literally has zero message queues A server you can connect to Persistent Out of the box solution (sorry to let you down)
  4. 4. Why use Ømq instead of X? It’s a paradigm change, you can hardly compare it to “other solutions” When your system require more advanced network interactions (or patterns) You need cheap and easy parallel processing You don’t want a single point of failure You need exceptional speed
  5. 5. Transports
  6. 6. Supported transports INPROC (in-process communication) IPC (inter-process communication) Multicast (using a pgm multicast) TCP
  7. 7. Let’s talk about patterns
  8. 8. Patterns is all what Ømq is about You can choose to use any of the patterns or combine them all in a single application Combining patterns help you build more advanced distributed systems
  9. 9. ICANHAZ? Client Server Request - Reply
  10. 10. Request - Reply client.php
  11. 11. Request - Reply server.php
  12. 12. Wait a minute... This looks way too slow, a single php process won’t cope the load of multiple clients.
  13. 13. We need a solution
  14. 14. The solution Start more servers on different ports Bind your clients to multiple servers using the same socket Ømq will automatically load balance them for you Drawback: You need to hardcode server addresses on each client
  15. 15. Load Balanced Requests More on balancing later...
  16. 16. Client Client Server Client Client Publisher - Subscriber
  17. 17. Publisher publisher.php
  18. 18. Subscriber client.php
  19. 19. Pub - Sub Like a radio broadcast, if you tune in late you’ll miss part of the show If client crashes the it will also lose messages It is possible to attach multiple filters to a connection You can listen on multiple addresses at once
  20. 20. Pub -Sub Ømq will buffer the messages in the subscriber if it is a “slow listener” It will drop messages if buffer gets too big That is extremely cool
  21. 21. Client Worker Worker Worker more steps Worker Fan Worker Sink Worker Push - Pull (Pipeline)
  22. 22. Push - Pull ventilator.php
  23. 23. Push - Pull task.php
  24. 24. Push - Pull sink.php
  25. 25. Push - Pull One way only PUSH is used for “fanning out” tasks PULL is used for fan-in or sink processes Workers can hop-in at any time Only one worker gets the task at a time and they are load balanced
  26. 26. Push - Pull Ømq will buffer the messages if there are no peers to get them It will block at some point if buffering too much That is also extremely cool
  27. 27. Devices
  28. 28. Devices or Brokers Devices are programs that will route messages between two nodes Devices are usually small but they can also be trusted with larger tasks, such as persisting messages Used to solve hard problems but also introduce single points of failure
  29. 29. We needed a solution
  30. 30. Devices as balancers Client Client Client Dealer Server Server Server
  31. 31. A simple broker broker.php
  32. 32. Devices Clients will connect to localhost:5559 Servers will connect to localhost:5560 Load balancing is done by Ømq If dealer fails everything breaks :( You can install failover dealers! :)
  33. 33. Devices Allow you to create more complex topologies Help you route requests to anonymous workers Good place for handling/persisting/retrying messages extra logic Can be written in any language supported by Ømq!
  34. 34. Let’s see some examples