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