Find file
Fetching contributors…
Cannot retrieve contributors at this time
283 lines (282 sloc) 13.5 KB
Architecture-of-the-MQ-Community Architecture of the 0MQ Community
Binary-Star-Implementation Binary Star Implementation
Protocol-Assertions Protocol Assertions
The-ROUTER-to-ROUTER-Combination The ROUTER to ROUTER Combination
Burnout Burnout
Upgrading-from-MQ-to-MQ Upgrading from 0MQ/2.2 to 0MQ/3.2
Vadim-Shalts-s-Story Vadim Shalts's Story
Writing-the-Unprotocol Writing the Unprotocol
Republishing-Updates-from-Clients Republishing Updates from Clients
the-community The ØMQ Community
Service-Oriented-Reliable-Queuing-Majordomo-Pattern Service-Oriented Reliable Queuing (Majordomo Pattern)
Preemptive-Discovery-over-Raw-Sockets Preemptive Discovery over Raw Sockets
Goals Goals
ROUTER-Broker-and-DEALER-Workers ROUTER Broker and DEALER Workers
Symbolic-Links Symbolic Links
Crazy-Beautiful-and-Easy Crazy, Beautiful, and Easy
Messaging-Patterns Messaging Patterns
Step-Draw-a-Rough-Architecture Step 2: Draw a Rough Architecture
Divide-and-Conquer Divide and Conquer
Group-Messaging Group Messaging
Getting-an-Out-of-band-Snapshot Getting an Out-of-band Snapshot
A-Minor-Note-on-Strings A Minor Note on Strings
The-Flash-Mob The Flash Mob
The-Mystic The Mystic
advanced-architecture Advanced Architecture using ØMQ
ROUTER-Broker-and-REQ-Workers ROUTER Broker and REQ Workers
Initial-Design-Cut-the-API Initial Design Cut - the API
Making-a-Clean-Exit Making a Clean Exit
-MQ-is-Not-a-Neutral-Carrier 0MQ is Not a Neutral Carrier
Upfront-Coordination Upfront Coordination
Chapter-A-Framework-for-Distributed-Computing Chapter 8 - A Framework for Distributed Computing
The-Zen-of-Zero The Zen of Zero
Why-We-Needed-MQ Why We Needed 0MQ
Tom-van-Leeuwen-s-Story Tom van Leeuwen's Story
A-Plausible-Minimal-Implementation A Plausible Minimal Implementation
Using-Sockets-to-Carry-Data Using Sockets to Carry Data
Chapter-Reliable-Request-Reply-Patterns Chapter 4 - Reliable Request-Reply Patterns
Configuration Configuration
Slow-Subscriber-Detection-Suicidal-Snail-Pattern Slow Subscriber Detection (Suicidal Snail Pattern)
How-the-Guide-Happened How the Guide Happened
Working-with-Messages Working with Messages
Heartbeating Heartbeating
Error-Handling Error Handling
Binary-Star-Reactor Binary Star Reactor
Preface Preface
Prototyping-the-Local-and-Cloud-Flows Prototyping the Local and Cloud Flows
Detecting-Disappearances Detecting Disappearances
What-s-This-Good-For What's This Good For?
Chapter-The-MQ-Community Chapter 6 - The 0MQ Community
Cooperative-Discovery-using-UDP-Broadcasts Cooperative Discovery using UDP Broadcasts
Last-Value-Caching Last Value Caching
High-level-Messaging-Patterns High-level Messaging Patterns
Michael-Jakl-s-Story Michael Jakl's Story
Point-to-point-Messaging Point-to-point Messaging
-MQ-Framing 0MQ Framing
Testing-and-Simulation Testing and Simulation
One-Way-Heartbeats One-Way Heartbeats
What-is-Reliability What is "Reliability"?
A-Real-Life-Example A Real-Life Example
The-Clustered-Hashmap-Protocol The Clustered Hashmap Protocol
Features-of-a-Higher-Level-API Features of a Higher-Level API
Getting-the-Message-Out Getting the Message Out
The-Secret-Life-of-WiFi The Secret Life of WiFi
Conclusions Conclusions
The-Tale-of-Two-Bridges The Tale of Two Bridges
Invalid-Combinations Invalid Combinations
Ephemeral-Values Ephemeral Values
Pub-Sub-Message-Envelopes Pub-Sub Message Envelopes
Step-Decide-on-the-Contracts Step 3: Decide on the Contracts
Tracing-Activity Tracing Activity
Simplicity-vs-Complexity Simplicity vs. Complexity
Language Language
Starting-Assumptions Starting Assumptions
reliable-request-reply Reliable Request-Reply Patterns
Idempotent-Services Idempotent Services
Audience-for-This-Book Audience for This Book
Binary-Logging-Protocol Binary Logging Protocol
Shared-Queue-DEALER-and-ROUTER-sockets Shared Queue (DEALER and ROUTER sockets)
Surprise-and-Expectations Surprise and Expectations
The-Social-Engineer The Social Engineer
How-This-Book-Happened How This Book Happened
I-O-Threads I/O Threads
Economics-of-Participation Economics of Participation
Ask-and-Ye-Shall-Receive Ask and Ye Shall Receive
Transferring-Files Transferring Files
Pros-and-Cons-of-Publish-Subscribe Pros and Cons of Publish-Subscribe
Zero-Copy Zero Copy
Disconnected-Reliability-Titanic-Pattern Disconnected Reliability (Titanic Pattern)
Test-Results Test Results
Node-Coordination Node Coordination
Socket-Scalability Socket Scalability
Creating-Stable-Releases Creating Stable Releases
Abstraction-Level Abstraction Level
Scaling-to-Multiple-Clusters Scaling to Multiple Clusters
The-Load-balancing-Pattern The Load-balancing Pattern
Step-Write-a-Minimal-End-to-End-Solution Step 4: Write a Minimal End-to-End Solution
The-Lazy-Perfectionist The Lazy Perfectionist
Licensing-and-Ownership Licensing and Ownership
Getting-an-Official-Port-Number Getting an Official Port Number
High-Water-Marks High Water Marks
How-to-Make-Really-Large-Architectures How to Make Really Large Architectures
Tales-from-Out-There Tales from Out There
Conclusion Conclusion
Licensing Licensing
Recovery-and-Late-Joiners Recovery and Late Joiners
Serializing-your-Data Serializing your Data
Prototyping-the-State-Flow Prototyping the State Flow
Signaling-between-Threads-PAIR-sockets Signaling between Threads (PAIR sockets)
The-REQ-to-REP-Combination The REQ to REP Combination
Federation-vs-Peering Federation vs. Peering
Why-use-the-GPLv-for-Public-Specifications Why use the GPLv3 for Public Specifications?
The-Mindful-General The Mindful General
The-Pirate-Gang The Pirate Gang
Shrugging-It-Off Shrugging It Off
Part-Software-Engineering-using-MQ Part 2 - Software Engineering using 0MQ
High-availability-Pair-Binary-Star-Pattern High-availability Pair (Binary Star Pattern)
The-Request-Reply-Mechanisms The Request-Reply Mechanisms
Spinning-off-a-Library-Project Spinning off a Library Project
Multithreading-with-MQ Multithreading with 0MQ
Plugging-Sockets-Into-the-Topology Plugging Sockets Into the Topology
On-Up-front-Testing On Up-front Testing
Trash-Oriented-Design Trash-Oriented Design
Missing-Message-Problem-Solver Missing Message Problem Solver
Client-side-Reliability-Lazy-Pirate-Pattern Client-side Reliability (Lazy Pirate Pattern)
Incompatible-Changes Incompatible Changes
Hand-written-Binary-Serialization Hand-written Binary Serialization
File-Stability File Stability
Programming-with-MQ Programming with 0MQ
Step-Internalize-the-Semantics Step 1: Internalize the Semantics
The-Constant-Gardener The Constant Gardener
Representing-State-as-Key-Value-Pairs Representing State as Key-Value Pairs
Unprotocols Unprotocols
Robustness-in-Conflict Robustness in Conflict
Exploring-ROUTER-Sockets Exploring ROUTER Sockets
How-MQ-Lost-its-Road-map How 0MQ Lost its Road-map
Transport-Bridging Transport Bridging
Chapter-Advanced-Publish-Subscribe-Patterns Chapter 5 - Advanced Publish-Subscribe Patterns
Delivery-Notifications Delivery Notifications
The-DEALER-to-REP-Combination The DEALER to REP Combination
The-Benevolent-Tyrant The Benevolent Tyrant
Cost-of-Failure Cost of Failure
Identities-and-Addresses Identities and Addresses
Suggested-Shim-Macros Suggested Shim Macros
Service-Discovery Service Discovery
postface Postface
On-Assertions On Assertions
basics Basics
A-High-Level-API-for-MQ A High-Level API for 0MQ
Why-make-FileMQ Why make FileMQ?
Model-Two-Brutal-Shotgun-Massacre Model Two - Brutal Shotgun Massacre
Working-with-Subtrees Working with Subtrees
A-Load-Balancing-Message-Broker A Load-Balancing Message Broker
Using-ABNF Using ABNF
advanced-request-reply Advanced Request-Reply Patterns
Contracts-are-Hard Contracts are Hard
High-speed-Subscribers-Black-Box-Pattern High-speed Subscribers (Black Box Pattern)
The-DEALER-to-ROUTER-Combination The DEALER to ROUTER Combination
moving-pieces A Framework for Distributed Computing
The-Canary-Watcher The Canary Watcher
Chapter-Sockets-and-Patterns Chapter 2 - Sockets and Patterns
Content-Distribution Content Distribution
Design-for-The-Real-World Design for The Real World
Putting-it-All-Together Putting it All Together
Design-Notes Design Notes
Chapter-Advanced-Request-Reply-Patterns Chapter 3 - Advanced Request-Reply Patterns
What-s-the-Current-Status What's the Current Status?
Contracts-and-Protocols Contracts and Protocols
Brokerless-Reliability-Freelance-Pattern Brokerless Reliability (Freelance Pattern)
The-Asynchronous-Client-Server-Pattern The Asynchronous Client-Server Pattern
The-Socket-API The Socket API
Chapter-Advanced-Architecture-using-MQ Chapter 7 - Advanced Architecture using 0MQ
Step-Solve-One-Problem-and-Repeat Step 5: Solve One Problem and Repeat
Git-Branches-Considered-Harmful Git Branches Considered Harmful
The-CZMQ-High-Level-API The CZMQ High-Level API
Discovery Discovery
Authentication-using-SASL Authentication using SASL
Heartbeating-for-Paranoid-Pirate Heartbeating for Paranoid Pirate
Stranger-meet-Stranger Stranger, meet Stranger
Fixing-the-World Fixing the World
The-Naming-Ceremony The Naming Ceremony
Adding-the-Binary-Star-Pattern-for-Reliability Adding the Binary Star Pattern for Reliability
Part-Learning-to-Work-with-MQ Part 1 - Learning to Work with 0MQ
Preventing-Split-Brain-Syndrome Preventing Split-Brain Syndrome
The-Open-Door The Open Door
Model-One-Simple-Retry-and-Failover Model One - Simple Retry and Failover
The-Earth-and-Sky The Earth and Sky
Care-and-Feeding Care and Feeding
Simplicity-Oriented-Design Simplicity-Oriented Design
Getting-the-Context-Right Getting the Context Right
Handling-Multiple-Sockets Handling Multiple Sockets
-MQ-in-a-Hundred-Words 0MQ in a Hundred Words
Detailed-Requirements Detailed Requirements
Version-Reporting Version Reporting
advanced-pub-sub Advanced Publish-Subscribe Patterns
Pub-sub-Tracing-Espresso-Pattern Pub-sub Tracing (Espresso Pattern)
Test-Use-Case-The-track-tool Test Use-Case - The 'track' tool
Visibility Visibility
Serialization-Languages Serialization Languages
Learning-Curve Learning Curve
UDP-Beacon-Framing UDP Beacon Framing
The-DEALER-to-DEALER-Combination The DEALER to DEALER Combination
Why-Unprotocols Why Unprotocols?
The-Cheap-or-Nasty-Pattern The Cheap or Nasty Pattern
Serialization-Libraries Serialization Libraries
Internal-Architecture Internal Architecture
The-MQ-Process-C The 0MQ Process - C4
Distributed-Logging-and-Monitoring Distributed Logging and Monitoring
Patterns-for-Success Patterns for Success
The-Contract The Contract
Multi-part-Messages Multi-part Messages
The-Historian The Historian
Basic-Reliable-Queuing-Simple-Pirate-Pattern Basic Reliable Queuing (Simple Pirate Pattern)
Building-and-Trying-FileMQ Building and Trying FileMQ
Designing-Reliability Designing Reliability
Designing-the-API Designing the API
Why-Mesh-isn-t-Here-Yet Why Mesh isn't Here Yet
Ping-Pong-Heartbeats Ping-Pong Heartbeats
Warning-Unstable-Paradigms Warning - Unstable Paradigms!
Preliminaries Preliminaries
Centralized-vs-Decentralized Centralized vs. Decentralized
Change-Latency Change Latency
The-Hangman The Hangman
The-Simple-Reply-Envelope The Simple Reply Envelope
The-Laughing-Clown The Laughing Clown
The-Provocateur The Provocateur
Asynchronous-Majordomo-Pattern Asynchronous Majordomo Pattern
Robust-Reliable-Queuing-Paranoid-Pirate-Pattern Robust Reliable Queuing (Paranoid Pirate Pattern)
The-REQ-to-ROUTER-Combination The REQ to ROUTER Combination
How-It-Began How It Began
The-Extended-Reply-Envelope The Extended Reply Envelope
sockets-and-patterns Sockets and Patterns
Handling-Errors-and-ETERM Handling Errors and ETERM
Unicast-Transports Unicast Transports
True-Peer-Connectivity-Harmony-Pattern True Peer Connectivity (Harmony Pattern)
Establishing-the-Details Establishing the Details
ROUTER-Error-Handling ROUTER Error Handling
Psychology-of-Software-Architecture Psychology of Software Architecture
Scalability Scalability
Initial-Design-Cut-the-Protocol Initial Design Cut - the Protocol
Worked-Example-Inter-Broker-Routing Worked Example: Inter-Broker Routing
Removing-Friction Removing Friction
-MQ-s-Built-in-Proxy-Function 0MQ's Built-in Proxy Function
Patch-Requirements Patch Requirements
Large-scale-File-Publishing-FileMQ Large-scale File Publishing - FileMQ
Detecting-Memory-Leaks Detecting Memory Leaks
The-Dynamic-Discovery-Problem The Dynamic Discovery Problem
The-Zyre-Tester The Zyre Tester
How-to-Write-Unprotocols How to Write Unprotocols
Chapter-Basics Chapter 1 - Basics
Getting-the-Examples Getting the Examples
Some-Physics Some Physics
Building-a-Multithreaded-Stack-and-API Building a Multithreaded Stack and API
Recap-of-Request-Reply-Sockets Recap of Request-Reply Sockets
Message-Oriented-Pattern-for-Elastic-Design Message Oriented Pattern for Elastic Design
Dealing-with-Blocked-Peers Dealing with Blocked Peers
Guarantees-of-Isolation Guarantees of Isolation
Public-API Public API
Designing-for-Innovation Designing for Innovation
Using-a-Reactor Using a Reactor
Request-Reply-Combinations Request-Reply Combinations
Acknowledgements Acknowledgements
Architecture-of-a-Single-Cluster Architecture of a Single Cluster
Audience Audience
Model-Three-Complex-and-Nasty Model Three - Complex and Nasty
Development-Process Development Process
Infinite-Property Infinite Property
The-Rolling-Stone The Rolling Stone
Example-Zyre-Application Example Zyre Application
Postface Postface
Making-a-Detour Making a Detour
Complexity-Oriented-Design Complexity-Oriented Design
State-Machines State Machines
Multiple-Nodes-on-One-Device Multiple Nodes on One Device
More-about-UDP More about UDP
Intermediaries-and-Proxies Intermediaries and Proxies
Reliable-Publish-Subscribe-Clone-Pattern Reliable Publish-Subscribe (Clone Pattern)
The-Process The Process
Evolution-of-Public-Contracts Evolution of Public Contracts
Compatible-Changes Compatible Changes
Rob-Gagnon-s-Story Rob Gagnon's Story
Handling-Interrupt-Signals Handling Interrupt Signals
Code-Generation Code Generation