A running example of the code from:
- http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang
 - http://nesv.github.io/golang/2014/02/25/worker-queues-in-go.html
 
Small refactorings made to original code:
| /pb_data | 
| package main | |
| import ( | |
| "bytes" | |
| "code.google.com/p/go.crypto/openpgp" | |
| "encoding/base64" | |
| "fmt" | |
| "io/ioutil" | |
| "log" | |
| ) | 
| package main | |
| import ( | |
| "bytes" | |
| "code.google.com/p/go.crypto/openpgp" | |
| "encoding/base64" | |
| "fmt" | |
| "io/ioutil" | |
| "log" | |
| ) | 
| package main | |
| import ( | |
| "bytes" | |
| "code.google.com/p/go.crypto/openpgp" | |
| "code.google.com/p/go.crypto/openpgp/armor" | |
| "fmt" | |
| "io/ioutil" | |
| "log" | |
| ) | 
| package main | |
| import ( | |
| "bytes" | |
| "code.google.com/p/go.crypto/openpgp" | |
| "code.google.com/p/go.crypto/openpgp/armor" | |
| "fmt" | |
| "io/ioutil" | |
| "log" | |
| ) | 
| package main | |
| import ( | |
| "bytes" | |
| "code.google.com/p/go.crypto/openpgp" | |
| "code.google.com/p/go.crypto/openpgp/armor" | |
| "fmt" | |
| "io/ioutil" | |
| "log" | |
| ) | 
| package main | |
| import ( | |
| "bytes" | |
| "code.google.com/p/go.crypto/openpgp" | |
| "code.google.com/p/go.crypto/openpgp/armor" | |
| "fmt" | |
| "io/ioutil" | |
| "log" | |
| ) | 
| - What do Etcd, Consul, and Zookeeper do? | |
| - Service Registration: | |
| - Host, port number, and sometimes authentication credentials, protocols, versions | |
| numbers, and/or environment details. | |
| - Service Discovery: | |
| - Ability for client application to query the central registry to learn of service location. | |
| - Consistent and durable general-purpose K/V store across distributed system. | |
| - Some solutions support this better than others. | |
| - Based on Paxos or some derivative (i.e. Raft) algorithm to quickly converge to a consistent state. | |
| - Centralized locking can be based on this K/V store. | 
A running example of the code from:
Small refactorings made to original code:
... or Why Pipelining Is Not That Easy
Golang Concurrency Patterns for brave and smart.
By @kachayev