forked from booksbyus/zguide
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.bookmarks
324 lines (324 loc) · 16 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
Cooperative-Discovery-Using-UDP-Broadcasts Cooperative Discovery Using UDP Broadcasts
Binary-Star-Implementation Binary Star Implementation
Architecture-of-the-MQ-Community Architecture of the 0MQ Community
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
Republishing-Updates-from-Clients Republishing Updates from Clients
Vadim-Shalts-s-Story Vadim Shalts's Story
Writing-the-Unprotocol Writing the Unprotocol
Service-Oriented-Reliable-Queuing-Majordomo-Pattern Service-Oriented Reliable Queuing (Majordomo Pattern)
the-community Chapter 6 - The 0MQ Community
ROUTER-Broker-and-DEALER-Workers ROUTER Broker and DEALER Workers
Goals Goals
Preemptive-Discovery-over-Raw-Sockets Preemptive Discovery over Raw Sockets
The-Importance-of-Contracts The Importance of Contracts
Messaging-Patterns Messaging Patterns
Crazy-Beautiful-and-Easy Crazy, Beautiful, and Easy
Symbolic-Links Symbolic Links
Divide-and-Conquer Divide and Conquer
Step-Draw-a-Rough-Architecture Step 2: Draw a Rough Architecture
Group-Messaging Group Messaging
A-Minor-Note-on-Strings A Minor Note on Strings
Getting-an-Out-of-band-Snapshot Getting an Out-of-band Snapshot
The-Flash-Mob The Flash Mob
The-Mystic The Mystic
Point-to-Point-Messaging Point-to-Point Messaging
ROUTER-Broker-and-REQ-Workers ROUTER Broker and REQ Workers
advanced-architecture Chapter 7 - Advanced Architecture using 0MQ
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
Large-Scale-File-Publishing-FileMQ Large-Scale File Publishing: FileMQ
Upfront-Coordination Upfront Coordination
Chapter-A-Framework-for-Distributed-Computing Chapter 8 - A Framework for Distributed Computing
Protocols-Without-The-Goats Protocols Without The Goats
Why-We-Needed-MQ Why We Needed 0MQ
The-Zen-of-Zero The Zen of Zero
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
Slow-Subscriber-Detection-Suicidal-Snail-Pattern Slow Subscriber Detection (Suicidal Snail Pattern)
Configuration Configuration
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
Language Language
Simplicity-vs-Complexity Simplicity vs. Complexity
Starting-Assumptions Starting Assumptions
reliable-request-reply Chapter 4 - 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)
The-Load-Balancing-Pattern The Load Balancing Pattern
Project-Administration Project Administration
Surprise-and-Expectations Surprise and Expectations
Test-Use-Case-The-Track-Tool Test Use Case: The Track Tool
The-Social-Engineer The Social Engineer
Multipart-Messages Multipart Messages
How-This-Book-Happened How This Book Happened
I-O-Threads I/O Threads
Pub-Sub-Tracing-Espresso-Pattern Pub-Sub Tracing (Espresso Pattern)
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
On-Up-Front-Testing On Up-Front Testing
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
Authentication-Using-SASL Authentication Using SASL
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
Eat-Me Eat Me
A-Self-Healing-P-P-Network-in-Seconds A Self-Healing P2P Network in 30 Seconds
Shrugging-It-Off Shrugging It Off
High-availability-Pair-Binary-Star-Pattern High-availability Pair (Binary Star Pattern)
Part-Software-Engineering-using-MQ Part 2 - Software Engineering using 0MQ
The-Request-Reply-Mechanisms The Request-Reply Mechanisms
Spinning-off-a-Library-Project Spinning off a Library Project
Pros-and-Cons-of-Pub-Sub Pros and Cons of Pub-Sub
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
Federation-Versus-Peering Federation Versus Peering
Programming-with-MQ Programming with 0MQ
Step-Internalize-the-Semantics Step 1: Internalize the Semantics
Contracts-Are-Hard Contracts Are Hard
The-Constant-Gardener The Constant Gardener
Robustness-in-Conflict Robustness in Conflict
Unprotocols Unprotocols
Representing-State-as-Key-Value-Pairs Representing State as Key-Value Pairs
Up-front-Coordination Up-front Coordination
Exploring-ROUTER-Sockets Exploring ROUTER Sockets
Reliable-Pub-Sub-Clone-Pattern Reliable Pub-Sub (Clone Pattern)
How-MQ-Lost-its-Road-map How 0MQ Lost its Road-map
Chapter-Advanced-Publish-Subscribe-Patterns Chapter 5 - Advanced Publish-Subscribe Patterns
Transport-Bridging Transport Bridging
The-DEALER-to-REP-Combination The DEALER to REP Combination
Delivery-Notifications Delivery Notifications
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 Chapter 1 - Basics
A-High-Level-API-for-MQ A High-Level API for 0MQ
Sending-and-Receiving-Messages Sending and Receiving Messages
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
Chapter-Advanced-Pub-Sub-Patterns Chapter 5 - Advanced Pub-Sub Patterns
Using-ABNF Using ABNF
advanced-request-reply Chapter 3 - 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 Chapter 8 - 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?
Technical-Requirements Technical Requirements
Contracts-and-Protocols Contracts and Protocols
Client-Side-Reliability-Lazy-Pirate-Pattern Client-Side Reliability (Lazy Pirate Pattern)
Brokerless-Reliability-Freelance-Pattern Brokerless Reliability (Freelance Pattern)
High-Availability-Pair-Binary-Star-Pattern High-Availability Pair (Binary Star 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
Plugging-Sockets-into-the-Topology Plugging Sockets into the Topology
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
Upgrading-from-MQ-v-to-MQ-v Upgrading from 0MQ v2.2 to 0MQ v3.2
Model-One-Simple-Retry-and-Failover Model One: Simple Retry and Failover
The-Earth-and-Sky The Earth and Sky
The-Use-Case The Use Case
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 Chapter 5 - Advanced Pub-Sub 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
How-MQ-Lost-Its-Road-Map How 0MQ Lost Its Road Map
Stranger-Meet-Stranger Stranger, Meet Stranger
High-Speed-Subscribers-Black-Box-Pattern High-Speed Subscribers (Black Box Pattern)
The-DEALER-to-DEALER-Combination The DEALER to DEALER Combination
Why-Unprotocols Why Unprotocols?
The-Cheap-or-Nasty-Pattern The Cheap or Nasty Pattern
Network-Discovery Network Discovery
Serialization-Libraries Serialization Libraries
Internal-Architecture Internal Architecture
The-MQ-Process-C The 0MQ Process: C4
-MQ-s-Built-In-Proxy-Function 0MQ's Built-In Proxy Function
Distributed-Logging-and-Monitoring Distributed Logging and Monitoring
Serializing-Your-Data Serializing Your Data
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
Spinning-Off-a-Library-Project Spinning Off a Library Project
Warning-Unstable-Paradigms Warning: Unstable Paradigms!
Preliminaries Preliminaries
Centralized-vs-Decentralized Centralized vs. Decentralized
Change-Latency Change Latency
The-Hangman The Hangman
The-Laughing-Clown The Laughing Clown
The-Simple-Reply-Envelope The Simple Reply Envelope
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 Chapter 2 - Sockets and Patterns
Handling-Errors-and-ETERM Handling Errors and ETERM
Signaling-Between-Threads-PAIR-Sockets Signaling Between Threads (PAIR Sockets)
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
Getting-an-Out-of-Band-Snapshot Getting an Out-of-Band Snapshot
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
More-About-UDP More About UDP
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
Centralized-Versus-Decentralized Centralized Versus Decentralized
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
Simplicity-Versus-Complexity Simplicity Versus Complexity
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
High-Level-Messaging-Patterns High-Level Messaging Patterns
Public-API Public API
Designing-for-Innovation Designing for Innovation
Why-Mesh-Isn-t-Here-Yet Why Mesh Isn't Here Yet
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
The-Rolling-Stone The Rolling Stone
Infinite-Property Infinite Property
Example-Zyre-Application Example Zyre Application
Postface Postface
Making-a-Detour Making a Detour
State-Machines State Machines
Complexity-Oriented-Design Complexity-Oriented Design
More-about-UDP More about UDP
Multiple-Nodes-on-One-Device Multiple Nodes on One Device
Handwritten-Binary-Serialization Handwritten Binary Serialization
Intermediaries-and-Proxies Intermediaries and Proxies
Reliable-Publish-Subscribe-Clone-Pattern Reliable Publish-Subscribe (Clone Pattern)
Evolution-of-Public-Contracts Evolution of Public Contracts
The-Process The Process
Rob-Gagnon-s-Story Rob Gagnon's Story
Compatible-Changes Compatible Changes
Code-Generation Code Generation
Handling-Interrupt-Signals Handling Interrupt Signals