• 服务发现系统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


  • 相关阅读:
    Wannafly camp Day1 E Growth
    Wannafly camp Day1 C Circle
    Android项目实战_手机安全卫士splash界面
    Android项目实战_手机安全卫士程序锁
    Android项目实战_手机安全卫士系统加速
    Android项目实战_手机安全卫士流量统计
    Android项目实战_手机安全卫士进程管理
    Android项目实战_手机安全卫士软件管家
    Android项目实战_手机安全卫士拦截骚扰
    Android项目实战_手机安全卫士手机防盗界面
  • 原文地址:https://www.cnblogs.com/youcong/p/10187569.html
Copyright © 2020-2023  润新知