Merge pull request #4252 from gyuho/client_doc

*: move EndpointSelection doc to godoc
This commit is contained in:
Gyu-Ho Lee 2016-01-21 10:02:32 -08:00
commit 1db0148ffd
2 changed files with 15 additions and 20 deletions

View File

@ -1,16 +0,0 @@
# etcd go client API
This document describes using the etcd client Go package `github.com/coreos/etcd/client`.
## Endpoint Selection Mode
Programs call `client.New()` to create an etcd client instance, passing configuration through the `client.Config` parameter. `client.Config`'s `SelectionMode` member is an `EndpointSelectionMode` `enum` that specifies the policy for choosing the etcd cluster node to which requests are sent.
.
### EndpointSelectionRandom (default)
The default value of the `SelectionMode` is `EndpointSelectionRandom`. As the name implies, the client object will pick a node from the members of the cluster in a random fashion. If the cluster has three members, A, B, and C, the client picks any node from its three members as its request destination.
### EndpointSelectionPrioritizeLeader
If `SelectionMode` is set to `EndpointSelectionPrioritizeLeader`, requests are sent directly to the cluster leader. This reduces forwarding roundtrips compared to making requests to etcd followers who then forward them to the cluster leader. In the event of a leader failure, however, clients configured this way cannot prioritize among the remaining etcd followers. Therefore, when a client sets `SelectionMode` to `EndpointSelectionPrioritizeLeader`, it must use `client.AutoSync()` to maintain its knowledge of current cluster state.

View File

@ -52,11 +52,21 @@ var DefaultTransport CancelableTransport = &http.Transport{
type EndpointSelectionMode int type EndpointSelectionMode int
const ( const (
// EndpointSelectionRandom is to pick an endpoint in a random manner. // EndpointSelectionRandom is the default value of the 'SelectionMode'.
// As the name implies, the client object will pick a node from the members
// of the cluster in a random fashion. If the cluster has three members, A, B,
// and C, the client picks any node from its three members as its request
// destination.
EndpointSelectionRandom EndpointSelectionMode = iota EndpointSelectionRandom EndpointSelectionMode = iota
// EndpointSelectionPrioritizeLeader is to prioritize leader for reducing needless // If 'SelectionMode' is set to 'EndpointSelectionPrioritizeLeader',
// forward between follower and leader. // requests are sent directly to the cluster leader. This reduces
// forwarding roundtrips compared to making requests to etcd followers
// who then forward them to the cluster leader. In the event of a leader
// failure, however, clients configured this way cannot prioritize among
// the remaining etcd followers. Therefore, when a client sets 'SelectionMode'
// to 'EndpointSelectionPrioritizeLeader', it must use 'client.AutoSync()' to
// maintain its knowledge of current cluster state.
// //
// This mode should be used with Client.AutoSync(). // This mode should be used with Client.AutoSync().
EndpointSelectionPrioritizeLeader EndpointSelectionPrioritizeLeader
@ -119,7 +129,8 @@ type Config struct {
// A HeaderTimeoutPerRequest of zero means no timeout. // A HeaderTimeoutPerRequest of zero means no timeout.
HeaderTimeoutPerRequest time.Duration HeaderTimeoutPerRequest time.Duration
// SelectionMode specifies a way of selecting destination endpoint. // SelectionMode is an EndpointSelectionMode enum that specifies the
// policy for choosing the etcd cluster node to which requests are sent.
SelectionMode EndpointSelectionMode SelectionMode EndpointSelectionMode
} }