当前位置:   article > 正文

etcd 基础_etcd put json

etcd put json

etcd特性

简单接口

  • 版本: V2和V3互不兼容(kubernetes1.1版本后弃用V2),V2基于内存而V3持久化到数据库
  • http协议:提供简单的调用接口,get、put、post、delete
  • 数据交换格式:html、json、xml
    • html:http协议原生的数据格式,被设计用来显示数据
    • json:JavaScript原生格式,被设计用来传输和存储数据
    • xml:一种简单的数据存储语言,被设计用来传输和存储数据
  • grpc:V3新增的通讯机制,rpc是应用在分布式系统通信协议(grpc是google提供的远程过程调用)
    • rpc是远程过程调用,过程也就是方法,自己没钱但是我想买,那就去借(借了我也不用还)
    • grpc与http结合的用处,这里就是http协议本身对于分布式场景的不足,而grpc就是不足的弥补
      • 效率低,属于7层协议
      • 可读写差
      • HTTP协议调用远程方法比较复杂

json和xml格式非常相似,结构对人有友好,易读取
rpc和http详细:点击访问(易哥说的还是很简洁易懂的)

在这里插入图片描述

Key-value存储

Key-value形式的存储可以理解为基于索引的引入思考,对于常规关系型数据库中建立索引来加快数据的查询,而有些场景只需要大量的基于索引的形式

分布式场景的产生,对于单机服务进行了拆解,由多台服务承担,提供更高效的服务,前提是需要确保各个节点上数据和事务的强一致性,Key-value存储在分布式中得到应用

  • 共享配置中心
    • 将一些配置信息放到etcd上进行集中管理,这类场景的使用方式通常是这样:应用在启动的时候主动从etcd获取一次配置信息,同时在etcd节点上注册一个Watcher并等待,以后每次配置有更新的时候,etcd都会实时地通知订阅者,以此达到获取最新配置信息的目的(提供服务发现)

在这里插入图片描述

目录就是类似key,目录里的文件或者目录就是类似value(可以嵌套)

服务发现

服务发现是解决分布式集群中的进程和服务,要如何才能找到对方并建立连接,常规的就是监控集群中哪些服务端口和地址进行连接,为什么需要增加etcd中间层,在分布式场景中提供方往往是多台负载,中间发送任何的改变,对于请求方是无法获取到的,(可以人工修改,但是避免不了就是服务的中断)因此添加etcd中间层来自动维护服务之间的状态连接

在这里插入图片描述
服务发现需要实现一下基本功能:

  • 服务注册:同一service的所有节点注册到相同目录下,节点启动后将自己的信息注册到所属服务的目录中
  • 健康检查:服务节点定时进行健康检查。注册到服务目录中的信息设置一个较短的TTL,运行正常的服务节点每隔一段时间会去更新信息的TTL,从而达到健康检查效果
  • 服务发现:通过服务节点能查询到服务提供外部访问的 IP 和端口号。比如网关代理服务时能够及时的发现服务中新增节点、丢弃不可用的服务节点
    在这里插入图片描述
    高可用性集群

etcd 是一个分布式的k/V存储系统,核心使用了RAFT分布式一致性协议,多台服务器的状态和数据都要保证一致性,为了提高容错性,就算其中一台服务器出现问题,也不能影响业务的使用

raft协议核心要点

  • Leader选举(Leader Election)

  • 日志同步 (Log Replication)

    leader收到client的更新请求后,会讲更新的内容同步给所有follower

  • 集群状态的正确性 (Safety)

    保证日志的一致性
    保证选举的正确性

服务器状态

  • leader

    处理所有客户端交互,日志复制等,一个任期只有一个

  • follower

    完全被动的选民,是只读的

  • candidate

    候选人,可以被选举为新领导

分布式锁

因为etcd使用Raft算法保证了数据的强一致性,某次操作存储到集群中的值必然是全局一致的,所以很容易实现分布式锁,两种实现方式

  • 保持独占,即所有获取锁的用户最终只有一个用户可以获得锁
  • 控制时序,即所有想要获得锁的用户都会被安排,但是获得锁的顺序也是全局唯一的,同时决定了执行顺序

架构

  • HTTP Server: 用于处理用户发送的API请求以及其它etcd节点的同步与心跳信息请求

  • Store:用于处理etcd支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是etcd对用户提供的大多数API功能的具体实现

  • Raft:Raft强一致性算法的具体实现,是etcd的核心

  • WAL(Write Ahead Log,预写式日志):是etcd的数据存储方式。除了在内存中存有所有数据的状态以及节点的索引以外,etcd就通过WAL进行持久化存储。WAL中,所有的数据提交前都会事先记录日志。Snapshot是为了防止数据过多而进行的状态快照,存储etcd数据状态;Entry表示存储的具体日志内容(类似mysql的bin日志功能)
    在这里插入图片描述

集群之间服务器是没有协同,各自干各自的,就是一堆提供相同服务的机器
分布式之间是相互协同合作,把一个服务拆分多个模块,在多台服务器上运行

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/568591
推荐阅读
相关标签
  

闽ICP备14008679号