zoukankan      html  css  js  c++  java
  • 服务发现系统etcd之安装和使用

    一、概述

    etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性。Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都广泛使用了etcd。在分布式系统中,如何管理节点间的状态一直是一个难题,etcd像是专门为集群环境的服务发现和注册而设计,它提供了数据TTL失效、数据改变监视、多值、目录监听、分布式锁原子操作等功能,可以方便的跟踪并管理集群节点的状态。

    etcd的特性如下:

    简单: 支持curl方式的用户API(HTTP+JSON)
    安全: 可选的SSL客户端证书认证
    快速: 单实例每秒 1000 次写操作
    可靠: 使用Raft保证一致性

    二、安装和使用
    1.安装

    etcd的安装非常简单,可以直接下载编译后的可执行文件,下载地址:https://github.com/coreos/etcd/releases

    curl -L https://github.com/coreos/etcd/releases/download/v3.0.6/etcd-v3.0.6-linux-amd64.tar.gz -o etcd-v3.0.6-linux-amd64.tar.gz

    tar xzvf etcd-v3.0.6-linux-amd64.tar.gz && cd etcd-v3.0.6-linux-amd64

    ./etcd --version


    2.使用

    etcd命令行接口使用

    (1)设置一个key的value
    curl -s http://127.0.0.1:2379/v2/keys/message -X PUT -d value="Hello world" |jq .

    可能会出现这样的信息导致命令执行失败:
    The program 'jq' is currently not installed. You can install it by typing:
    apt install jq

    执行 apt install jq 即可解决这个问题


    控制台输出:

    {
      "action": "set",
      "node": {
        "key": "/message",
        "value": "Hello world",
        "modifiedIndex": 7,
        "createdIndex": 7
      },
      "prevNode": {
        "key": "/message",
        "value": "Hello world",
        "modifiedIndex": 6,
        "createdIndex": 6
      }
    }


    (2)获取一个key的value
    curl -s http://127.0.0.1:2379/v2/keys/message |jq .

    控制台输出:
    {
      "action": "get",
      "node": {
        "key": "/message",
        "value": "Hello world",
        "modifiedIndex": 7,
        "createdIndex": 7
      }
    }


    (3)改变一个key的value
    curl -s http://127.0.0.1:2379/v2/keys/message -X PUT -d value="Hello etcd" |jq .

    控制台输出:

    (4)删除一个key节点
    curl -s http://127.0.0.1:2379/v2/keys/message -X DELETE |jq .

    控制台输出:
    {
      "action": "delete",
      "node": {
        "key": "/message",
        "modifiedIndex": 9,
        "createdIndex": 8
      },
      "prevNode": {
        "key": "/message",
        "value": "Hello etcd",
        "modifiedIndex": 8,
        "createdIndex": 8
      }
    }



    (5)使用ttl(即设置一个key的值并给这个key加一个生命周期,当超过这个时间该值没有被访问则自动被删除)
     curl -s http://127.0.0.1:2379/v2/keys/foo -X PUT -d value=bar -d ttl=5 |jq .


    控制台输出:
    {
      "action": "set",
      "node": {
        "key": "/foo",
        "value": "bar",
        "expiration": "2018-12-27T07:57:39.165083953Z",
        "ttl": 5,
        "modifiedIndex": 10,
        "createdIndex": 10
      }
    }

    (6)watch一个值的变化
    curl -s http://127.0.0.1:2379/v2/keys/foo?wait=true


    (7)创建一个目录
    curl -s http://127.0.0.1:2379/v2/keys/dir -XPUT -d dir=true |jq .

    控制台输出:

    {
      "action": "set",
      "node": {
        "key": "/dir",
        "dir": true,
        "modifiedIndex": 12,
        "createdIndex": 12
      }
    }

    (8)列举一个目录
    curl -s http://127.0.0.1:2379/v2/keys/dir


    (9)递归列举一个目录
    curl -s http://127.0.0.1:2379/v2/keys/dir?recursive=true

    (10)监控一个目录下的所有key的变化,包括子目录的。可以使用命令
    curl -s http://127.0.0.1:2379/v2/keys/dir?recursive=true&wait=true

    (11)删除一个目录
    curl -s http://127.0.0.1:2379/v2/keys/dir?dir=true -XDELETE

    参考地址:https://www.cnblogs.com/xigang8068/p/5786027.html


  • 相关阅读:
    HLG 1522 子序列的和【队列的应用】
    POJ 3273 Monthly Expense【二分】
    HDU 4004 The Frog's Games 【二分】
    POJ 2001 Shortest Prefixes【第一棵字典树】
    POJ 2823 Sliding Window【单调对列经典题目】
    HDU 1969 Pie 【二分】
    POJ 3125 Printer Queue【暴力模拟】
    POJ 3250 Bad Hair Day【单调栈】
    字典树【模板】
    验证码 Code
  • 原文地址:https://www.cnblogs.com/youcong/p/10187569.html
Copyright © 2011-2022 走看看