forked from booksbyus/zguide
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.bookmarks
338 lines (338 loc) · 16.8 KB
/
.bookmarks
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
Upfront-Coordination Upfront Coordination
Psychology-of-Software-Architecture Psychology of Software Architecture
Getting-an-Out-of-band-Snapshot Getting an Out-of-band Snapshot
Upgrading-from-MQ-to-MQ Upgrading from 0MQ/2.2 to 0MQ/3.2
Working-with-Subtrees Working with Subtrees
Building-a-Multithreaded-Stack-and-API Building a Multithreaded Stack and API
The-ZeroMQ-Process-C The ZeroMQ Process: C4
Brokerless-Reliability-Freelance-Pattern Brokerless Reliability (Freelance Pattern)
Contracts-Are-Hard Contracts Are Hard
Suggested-Shim-Macros Suggested Shim Macros
Testing-and-Simulation Testing and Simulation
A-Load-Balancing-Message-Broker A Load Balancing Message Broker
Service-Oriented-Reliable-Queuing-Majordomo-Pattern Service-Oriented Reliable Queuing (Majordomo Pattern)
Designing-Reliability Designing Reliability
Getting-an-Official-Port-Number Getting an Official Port Number
High-level-Messaging-Patterns High-level Messaging Patterns
Centralized-vs-Decentralized Centralized vs. Decentralized
The-Importance-of-Contracts The Importance of Contracts
Handwritten-Binary-Serialization Handwritten Binary Serialization
The-Contract The Contract
The-Use-Case The Use Case
Cooperative-Discovery-using-UDP-Broadcasts Cooperative Discovery using UDP Broadcasts
A-Real-Life-Example A Real-Life Example
The-Tale-of-Two-Bridges The Tale of Two Bridges
advanced-pub-sub Chapter 5 - Advanced Pub-Sub Patterns
The-REQ-to-REP-Combination The REQ to REP Combination
Preemptive-Discovery-over-Raw-Sockets Preemptive Discovery over Raw Sockets
The-Extended-Reply-Envelope The Extended Reply Envelope
Representing-State-as-Key-Value-Pairs Representing State as Key-Value Pairs
Model-Three-Complex-and-Nasty Model Three: Complex and Nasty
Tales-from-Out-There Tales from Out There
The-Request-Reply-Mechanisms The Request-Reply Mechanisms
Abstraction-Level Abstraction Level
-MQ-in-a-Hundred-Words 0MQ in a Hundred Words
Authentication-using-SASL Authentication using SASL
Delivery-Notifications Delivery Notifications
Postface Postface
Messaging-Patterns Messaging Patterns
basics Chapter 1 - Basics
How-It-Began How It Began
Eat-Me Eat Me
ZeroMQ-s-Built-In-Proxy-Function ZeroMQ's Built-In Proxy Function
Upgrading-from-ZeroMQ-v-to-ZeroMQ-v Upgrading from ZeroMQ v2.2 to ZeroMQ v3.2
Public-API Public API
Robustness-in-Conflict Robustness in Conflict
Establishing-the-Details Establishing the Details
Step-Internalize-the-Semantics Step 1: Internalize the Semantics
How-to-Write-Unprotocols How to Write Unprotocols
Why-use-the-GPLv-for-Public-Specifications Why use the GPLv3 for Public Specifications?
Sending-and-Receiving-Messages Sending and Receiving Messages
The-Mystic The Mystic
Reliable-Publish-Subscribe-Clone-Pattern Reliable Publish-Subscribe (Clone Pattern)
Why-We-Needed-MQ Why We Needed 0MQ
Slow-Subscriber-Detection-Suicidal-Snail-Pattern Slow Subscriber Detection (Suicidal Snail Pattern)
On-Up-Front-Testing On Up-Front Testing
Programming-with-ZeroMQ Programming with ZeroMQ
Multi-part-Messages Multi-part Messages
Test-Use-Case-The-Track-Tool Test Use Case: The Track Tool
How-to-Make-Really-Large-Architectures How to Make Really Large Architectures
Internal-Architecture Internal Architecture
Unprotocols Unprotocols
How-MQ-Lost-Its-Road-Map How 0MQ Lost Its Road Map
Designing-for-Innovation Designing for Innovation
The-Laughing-Clown The Laughing Clown
Design-Notes Design Notes
Transport-Bridging Transport Bridging
Evolution-of-Public-Contracts Evolution of Public Contracts
Chapter-Advanced-Architecture-using-MQ Chapter 7 - Advanced Architecture using 0MQ
Idempotent-Services Idempotent Services
Version-Reporting Version Reporting
Authentication-Using-SASL Authentication Using SASL
ZeroMQ-is-Not-a-Neutral-Carrier ZeroMQ is Not a Neutral Carrier
Heartbeating-for-Paranoid-Pirate Heartbeating for Paranoid Pirate
Economics-of-Participation Economics of Participation
The-REQ-to-ROUTER-Combination The REQ to ROUTER Combination
Plugging-Sockets-Into-the-Topology Plugging Sockets Into the Topology
The-Clustered-Hashmap-Protocol The Clustered Hashmap Protocol
Fixing-the-World Fixing the World
Message-Oriented-Pattern-for-Elastic-Design Message-Oriented Pattern for Elastic Design
The-Earth-and-Sky The Earth and Sky
Test-Results Test Results
Signaling-between-Threads-PAIR-sockets Signaling between Threads (PAIR sockets)
The-DEALER-to-REP-Combination The DEALER to REP Combination
A-High-Level-API-for-MQ A High-Level API for 0MQ
Tom-van-Leeuwen-s-Story Tom van Leeuwen's Story
Robust-Reliable-Queuing-Paranoid-Pirate-Pattern Robust Reliable Queuing (Paranoid Pirate Pattern)
High-Water-Marks High-Water Marks
Up-front-Coordination Up-front Coordination
The-Rolling-Stone The Rolling Stone
advanced-request-reply Chapter 3 - Advanced Request-Reply Patterns
Git-Branches-Considered-Harmful Git Branches Considered Harmful
The-Zyre-Tester The Zyre Tester
Zero-Copy Zero-Copy
The-MQ-Process-C The 0MQ Process: C4
-MQ-Framing 0MQ Framing
Centralized-Versus-Decentralized Centralized Versus Decentralized
Preliminaries Preliminaries
Recap-of-Request-Reply-Sockets Recap of Request-Reply Sockets
Visibility Visibility
Care-and-Feeding Care and Feeding
Model-Two-Brutal-Shotgun-Massacre Model Two: Brutal Shotgun Massacre
moving-pieces Chapter 8 - A Framework for Distributed Computing
Dealing-with-Blocked-Peers Dealing with Blocked Peers
Initial-Design-Cut-the-API Initial Design Cut: the API
Multiple-Nodes-on-One-Device Multiple Nodes on One Device
Republishing-Updates-from-Clients Republishing Updates from Clients
Signaling-Between-Threads-PAIR-Sockets Signaling Between Threads (PAIR Sockets)
Pub-Sub-Message-Envelopes Pub-Sub Message Envelopes
Multipart-Messages Multipart Messages
Designing-the-API Designing the API
How-MQ-Lost-its-Road-map How 0MQ Lost its Road-map
More-About-UDP More About UDP
Change-Latency Change Latency
Chapter-Advanced-Architecture-using-ZeroMQ Chapter 7 - Advanced Architecture using ZeroMQ
postface Postface
True-Peer-Connectivity-Harmony-Pattern True Peer Connectivity (Harmony Pattern)
advanced-architecture Chapter 7 - Advanced Architecture using ZeroMQ
Last-Value-Caching Last Value Caching
Goals Goals
Binary-Star-Implementation Binary Star Implementation
Spinning-Off-a-Library-Project Spinning Off a Library Project
Transferring-Files Transferring Files
Tracing-Activity Tracing Activity
High-speed-Subscribers-Black-Box-Pattern High-speed Subscribers (Black Box Pattern)
Intermediaries-and-Proxies Intermediaries and Proxies
More-about-UDP More about UDP
Socket-Scalability Socket Scalability
Reliable-Pub-Sub-Clone-Pattern Reliable Pub-Sub (Clone Pattern)
Exploring-ROUTER-Sockets Exploring ROUTER Sockets
Crazy-Beautiful-and-Easy Crazy, Beautiful, and Easy
Multithreading-with-ZeroMQ Multithreading with ZeroMQ
Step-Decide-on-the-Contracts Step 3: Decide on the Contracts
The-Benevolent-Tyrant The Benevolent Tyrant
Invalid-Combinations Invalid Combinations
Pros-and-Cons-of-Pub-Sub Pros and Cons of Pub-Sub
Burnout Burnout
Warning-Unstable-Paradigms Warning: Unstable Paradigms!
Symbolic-Links Symbolic Links
Programming-with-MQ Programming with 0MQ
Preface Preface
The-Constant-Gardener The Constant Gardener
Simplicity-Oriented-Design Simplicity Oriented Design
Audience Audience
Why-We-Needed-ZeroMQ Why We Needed ZeroMQ
Content-Distribution Content Distribution
Rob-Gagnon-s-Story Rob Gagnon's Story
the-community Chapter 6 - The ZeroMQ Community
Making-a-Clean-Exit Making a Clean Exit
Acknowledgements Acknowledgements
The-Historian The Historian
Part-Learning-to-Work-with-MQ Part 1 - Learning to Work with 0MQ
Distributed-Logging-and-Monitoring Distributed Logging and Monitoring
On-Assertions On Assertions
Spinning-off-a-Library-Project Spinning off a Library Project
Cost-of-Failure Cost of Failure
Disconnected-Reliability-Titanic-Pattern Disconnected Reliability (Titanic Pattern)
UDP-Beacon-Framing UDP Beacon Framing
Putting-it-All-Together Putting it All Together
Large-Scale-File-Publishing-FileMQ Large-Scale File Publishing: FileMQ
Project-Administration Project Administration
Ephemeral-Values Ephemeral Values
Error-Handling Error Handling
Request-Reply-Combinations Request-Reply Combinations
The-Pirate-Gang The Pirate Gang
The-Load-balancing-Pattern The Load-balancing Pattern
Compatible-Changes Compatible Changes
Conclusion Conclusion
Using-ABNF Using ABNF
Why-Mesh-isn-t-Here-Yet Why Mesh isn't Here Yet
Why-Unprotocols Why Unprotocols?
A-Self-Healing-P-P-Network-in-Seconds A Self-Healing P2P Network in 30 Seconds
-MQ-s-Built-In-Proxy-Function 0MQ's Built-In Proxy Function
Architecture-of-the-MQ-Community Architecture of the 0MQ Community
Language Language
Removing-Friction Removing Friction
Shrugging-It-Off Shrugging It Off
Infinite-Property Infinite Property
Contracts-and-Protocols Contracts and Protocols
-MQ-is-Not-a-Neutral-Carrier 0MQ is Not a Neutral Carrier
Handling-Multiple-Sockets Handling Multiple Sockets
Adding-the-Binary-Star-Pattern-for-Reliability Adding the Binary Star Pattern for Reliability
ZeroMQ-Framing ZeroMQ Framing
Trash-Oriented-Design Trash-Oriented Design
Binary-Logging-Protocol Binary Logging Protocol
sockets-and-patterns Chapter 2 - Sockets and Patterns
Serializing-your-Data Serializing your Data
Incompatible-Changes Incompatible Changes
Chapter-Advanced-Pub-Sub-Patterns Chapter 5 - Advanced Pub-Sub Patterns
Unicast-Transports Unicast Transports
Handling-Errors-and-ETERM Handling Errors and ETERM
Getting-the-Examples Getting the Examples
The-Hangman The Hangman
Example-Zyre-Application Example Zyre Application
The-Process The Process
Chapter-The-MQ-Community Chapter 6 - The 0MQ Community
Contracts-are-Hard Contracts are Hard
Node-Coordination Node Coordination
Scaling-to-Multiple-Clusters Scaling to Multiple Clusters
Features-of-a-Higher-Level-API Features of a Higher-Level API
Detecting-Memory-Leaks Detecting Memory Leaks
ZeroMQ-in-a-Hundred-Words ZeroMQ in a Hundred Words
Starting-Assumptions Starting Assumptions
Preventing-Split-Brain-Syndrome Preventing Split-Brain Syndrome
On-Up-front-Testing On Up-front Testing
The-DEALER-to-DEALER-Combination The DEALER to DEALER Combination
Shared-Queue-DEALER-and-ROUTER-sockets Shared Queue (DEALER and ROUTER sockets)
The-ROUTER-to-ROUTER-Combination The ROUTER to ROUTER Combination
A-Minor-Note-on-Strings A Minor Note on Strings
Group-Messaging Group Messaging
Some-Physics Some Physics
The-CZMQ-High-Level-API The CZMQ High-Level API
How-This-Book-Happened How This Book Happened
The-Open-Door The Open Door
Using-a-Reactor Using a Reactor
Missing-Message-Problem-Solver Missing Message Problem Solver
Why-Mesh-Isn-t-Here-Yet Why Mesh Isn't Here Yet
High-availability-Pair-Binary-Star-Pattern High-availability Pair (Binary Star Pattern)
High-Level-Messaging-Patterns High-Level Messaging Patterns
Simplicity-vs-Complexity Simplicity vs. Complexity
Technical-Requirements Technical Requirements
One-Way-Heartbeats One-Way Heartbeats
Test-Use-Case-The-track-tool Test Use-Case - The 'track' tool
The-Mindful-General The Mindful General
Chapter-The-ZeroMQ-Community Chapter 6 - The ZeroMQ Community
Binary-Star-Reactor Binary Star Reactor
ROUTER-Broker-and-REQ-Workers ROUTER Broker and REQ Workers
Getting-the-Context-Right Getting the Context Right
Divide-and-Conquer Divide and Conquer
Model-One-Simple-Retry-and-Failover Model One: Simple Retry and Failover
Worked-Example-Inter-Broker-Routing Worked Example: Inter-Broker Routing
Architecture-of-the-ZeroMQ-Community Architecture of the ZeroMQ Community
Configuration Configuration
Point-to-Point-Messaging Point-to-Point Messaging
Architecture-of-a-Single-Cluster Architecture of a Single Cluster
Ask-and-Ye-Shall-Receive Ask and Ye Shall Receive
The-Naming-Ceremony The Naming Ceremony
Client-side-Reliability-Lazy-Pirate-Pattern Client-side Reliability (Lazy Pirate Pattern)
Federation-vs-Peering Federation vs. Peering
The-Cheap-or-Nasty-Pattern The Cheap or Nasty Pattern
Design-for-The-Real-World Design for The Real World
Chapter-Advanced-Request-Reply-Patterns Chapter 3 - Advanced Request-Reply Patterns
Stranger-meet-Stranger Stranger, meet Stranger
Step-Draw-a-Rough-Architecture Step 2: Draw a Rough Architecture
Pub-sub-Tracing-Espresso-Pattern Pub-sub Tracing (Espresso Pattern)
The-Secret-Life-of-WiFi The Secret Life of WiFi
Plugging-Sockets-into-the-Topology Plugging Sockets into the Topology
Pub-Sub-Tracing-Espresso-Pattern Pub-Sub Tracing (Espresso Pattern)
Protocol-Assertions Protocol Assertions
ROUTER-Broker-and-DEALER-Workers ROUTER Broker and DEALER Workers
What-s-the-Current-Status What's the Current Status?
Getting-an-Out-of-Band-Snapshot Getting an Out-of-Band Snapshot
Service-Discovery Service Discovery
The-Lazy-Perfectionist The Lazy Perfectionist
Why-make-FileMQ Why make FileMQ?
Serializing-Your-Data Serializing Your Data
Step-Write-a-Minimal-End-to-End-Solution Step 4: Write a Minimal End-to-End Solution
The-Canary-Watcher The Canary Watcher
Patterns-for-Success Patterns for Success
Protocols-Without-The-Goats Protocols Without The Goats
How-ZeroMQ-Lost-Its-Road-Map How ZeroMQ Lost Its Road Map
How-the-Guide-Happened How the Guide Happened
I-O-Threads I/O Threads
Basic-Reliable-Queuing-Simple-Pirate-Pattern Basic Reliable Queuing (Simple Pirate Pattern)
Identities-and-Addresses Identities and Addresses
Heartbeating Heartbeating
Chapter-Advanced-Publish-Subscribe-Patterns Chapter 5 - Advanced Publish-Subscribe Patterns
Cooperative-Discovery-Using-UDP-Broadcasts Cooperative Discovery Using UDP Broadcasts
Using-Sockets-to-Carry-Data Using Sockets to Carry Data
Step-Solve-One-Problem-and-Repeat Step 5: Solve One Problem and Repeat
Network-Discovery Network Discovery
Working-with-Messages Working with Messages
Patch-Requirements Patch Requirements
The-Load-Balancing-Pattern The Load Balancing Pattern
Licensing-and-Ownership Licensing and Ownership
Surprise-and-Expectations Surprise and Expectations
The-Dynamic-Discovery-Problem The Dynamic Discovery Problem
Licensing Licensing
Hand-written-Binary-Serialization Hand-written Binary Serialization
Simplicity-Versus-Complexity Simplicity Versus Complexity
Creating-Stable-Releases Creating Stable Releases
Pros-and-Cons-of-Publish-Subscribe Pros and Cons of Publish-Subscribe
Handling-Interrupt-Signals Handling Interrupt Signals
Large-scale-File-Publishing-FileMQ Large-scale File Publishing - FileMQ
Detailed-Requirements Detailed Requirements
Federation-Versus-Peering Federation Versus Peering
Initial-Design-Cut-the-Protocol Initial Design Cut: the Protocol
The-Socket-API The Socket API
Chapter-Reliable-Request-Reply-Patterns Chapter 4 - Reliable Request-Reply Patterns
Ping-Pong-Heartbeats Ping-Pong Heartbeats
Prototyping-the-State-Flow Prototyping the State Flow
The-Provocateur The Provocateur
-MQ-s-Built-in-Proxy-Function 0MQ's Built-in Proxy Function
Serialization-Libraries Serialization Libraries
Discovery Discovery
Client-Side-Reliability-Lazy-Pirate-Pattern Client-Side Reliability (Lazy Pirate Pattern)
Stranger-Meet-Stranger Stranger, Meet Stranger
The-DEALER-to-ROUTER-Combination The DEALER to ROUTER Combination
Michael-Jakl-s-Story Michael Jakl's Story
A-High-Level-API-for-ZeroMQ A High-Level API for ZeroMQ
Complexity-Oriented-Design Complexity-Oriented Design
High-Availability-Pair-Binary-Star-Pattern High-Availability Pair (Binary Star Pattern)
Chapter-Sockets-and-Patterns Chapter 2 - Sockets and Patterns
Part-Software-Engineering-using-MQ Part 2 - Software Engineering using 0MQ
Audience-for-This-Book Audience for This Book
The-Zen-of-Zero The Zen of Zero
What-is-Reliability What is "Reliability"?
Chapter-A-Framework-for-Distributed-Computing Chapter 8 - A Framework for Distributed Computing
Multithreading-with-MQ Multithreading with 0MQ
Conclusions Conclusions
Writing-the-Unprotocol Writing the Unprotocol
Point-to-point-Messaging Point-to-point Messaging
The-Asynchronous-Client-Server-Pattern The Asynchronous Client/Server Pattern
ROUTER-Error-Handling ROUTER Error Handling
reliable-request-reply Chapter 4 - Reliable Request-Reply Patterns
State-Machines State Machines
Chapter-Basics Chapter 1 - Basics
Getting-the-Message-Out Getting the Message Out
The-Flash-Mob The Flash Mob
The-Simple-Reply-Envelope The Simple Reply Envelope
Guarantees-of-Isolation Guarantees of Isolation
What-s-This-Good-For What's This Good For?
Prototyping-the-Local-and-Cloud-Flows Prototyping the Local and Cloud Flows
A-Plausible-Minimal-Implementation A Plausible Minimal Implementation
Making-a-Detour Making a Detour
High-Speed-Subscribers-Black-Box-Pattern High-Speed Subscribers (Black Box Pattern)
Serialization-Languages Serialization Languages
Development-Process Development Process
Vadim-Shalts-s-Story Vadim Shalts's Story
Detecting-Disappearances Detecting Disappearances
Upgrading-from-MQ-v-to-MQ-v Upgrading from 0MQ v2.2 to 0MQ v3.2
Scalability Scalability
Learning-Curve Learning Curve
Asynchronous-Majordomo-Pattern Asynchronous Majordomo Pattern
File-Stability File Stability
The-Social-Engineer The Social Engineer
Code-Generation Code Generation
Building-and-Trying-FileMQ Building and Trying FileMQ
Recovery-and-Late-Joiners Recovery and Late Joiners