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