ETCD:クライアントv 3

2173 ワード

原文アドレス:etcd/clientv 3 etcd/clientv3 v 3バージョンのGo etcd公式クライアント
インストール
go get go.etcd.io/etcd/clientv3

スタート
作成クライアントはclientv3.Newを使用します.
cli, err := clientv3.New(clientv3.Config{
    Endpoints:   []string{"localhost:2379", "localhost:22379", "localhost:32379"},
    DialTimeout: 5 * time.Second,
})
if err != nil {
    // handle error!
}
defer cli.Close()

etcd v 3はgRPCを使用してリモートプログラム呼び出しを行い、clientv3grpc-goを使用してetcdを接続する.クライアントを使用した後に閉じていることを確認し、クライアントが閉じていない場合は、接続が漏洩するgoroutinesがあります.タイムアウト時間を指定し、context.WithTimeoutでAPIsを使用します.
ctx, cancel := context.WithTimeout(context.Background(), timeout)
resp, err := cli.Put(ctx, "sample_key", "sample_value")
cancel()
if err != nil {
    // handle error!
}
// use the response

完全な互換性のために、etcd'sのvendoredパッケージを使用して構築することをお勧めします.golang/depのようなツールを使用して、vendorディレクトリ内にあります.
エラー処理
etcdクライアントは、2つのタイプのエラーを返します.
  • context error :canceled or deadline exceeded.
  • gRpc error:api/v 3 rpc/rpctypesを見る.

  • クライアントエラーの処理例を示します.
    resp, err := cli.Put(ctx, "", "")
    if err != nil {
        switch err {
        case context.Canceled:
            log.Fatalf("ctx is canceled by another routine: %v", err)
        case context.DeadlineExceeded:
            log.Fatalf("ctx is attached with a deadline is exceeded: %v", err)
        case rpctypes.ErrEmptyKey:
            log.Fatalf("client-side error: %v", err)
        default:
            log.Fatalf("bad cluster endpoints, which are not etcd servers: %v", err)
        }
    }

    モニタリング
    etcdクライアントはgo-grpc-prometheusを通じてRPCモニタリング指標を選択し、例を見ることができる.
    ネーミングスペース
    namespaceパケットは、clientv3インタフェースカプセル化透明分離クライアントがユーザ定義に要求するプレフィックスを提供する.
    要求サイズの制限
    クライアント要求サイズ制限は、clientv3.Config.MaxCallSendMsgSizeおよびMaxCallRecvMsgSizeによって構成される.値が与えられていない場合、クライアント要求送信制限は、gRPC負荷のデフォルト2 MBを含む.受信制限のデフォルトはmath.MaxInt32です.

    より多くのコード例はGoDocから発見できる.