文档章节

ETCD轮换使用场景与工作原理(学习笔记)

ND小龙
 ND小龙
发布于 2017/08/14 01:01
字数 1049
阅读 57
收藏 1

ETCD使用案例

据公开资料显示,至少有CoreOS, Google Kubernetes(K8S), Cloud Foundry, 以及在Github上超过500个项目在使用ETCD。

 

ETCD是什么

    etcd是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd是由CoreOS开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。Raft是一个来自Stanford的新的一致性算法,适用于分布式系统的日志复制,Raft通过选举的方式来实现一致性,在Raft中,任何一个节点都可能成为Leader

    etcd 集群的工作原理基于 raft 共识算法 (The Raft Consensus Algorithm)。etcd 在 0.5.0 版本中重新实现了 raft 算法,而非像之前那样依赖于第三方库 go-raft 。raft 共识算法的优点在于可以在高效的解决分布式系统中各个节点日志内容一致性问题的同时,也使得集群具备一定的容错能力。即使集群中出现部分节点故障、网络故障等问题,仍可保证其余大多数节点正确的步进。甚至当更多的节点(一般来说超过集群节点总数的一半)出现故障而导致集群不可用时,依然可以保证节点中的数据不会出现错误的结果。

 

服务发现(Service Discovery)

服务发现了解集群中是否有进程在监听udp或tcp端口,并且通过名字就可以进行查找和连接。

微服务协同工作

微服务协同工作架构中,服务动态添加。随着Docker容器的流行,多种微服务共同协作,构成一个功能相对强大的架构的案例越来越多。透明化的动态添加这些服务的需求也日益强烈。通过服务发现机制,在etcd中注册某个服务名字的目录,在该目录下存储可用的服务节点的IP。在使用服务的过程中,只要从服务目录下查找可用的服务节点进行使用即可。 

 

多实例透明化

PaaS平台中应用多实例与实例故障重启透明化。PaaS平台中的应用一般都有多个实例,通过域名,不仅可以透明地对多个实例进行访问,而且还可以实现负载均衡。但是应用的某个实例随时都有可能故障重启,这时就需要动态地配置域名解析(路由)中的信息。通过etcd的服务发现功能解决这个动态配置的问题。

 

日志复制

    主节点将每次操作形成日志条目,并持久化到本地磁盘,然后通过网络IO发送给其他节点。其他节点根据日志的逻辑时钟(TERM)和日志编号(INDEX)来判断是否将该日志记录持久化到本地。当主节点收到包括自己在内超过半数节点成功返回,那么认为该日志是可提交的(committed),并将日志输入到状态机,将结果返回给客户端。

 

Leader竞选


    集群监控与Leader竞选,通过etcd来进行监控实现。

  1.  当某个节点消失或有变动时,Watcher会第一时间发现并告知用户;
  2.  节点可以设置TTL key,比如每隔30s向etcd发送一次心跳使代表该节点仍然存活,否则说明节点消失;

    第一时间检测到各节点的健康状态,以完成集群的监控要求。当节点所在的机器出现硬件故障,或者节点出现如数据目录损坏等问题,导致节点永久性的不可恢复时,就需要对节点进行迁移或者替换。当一个节点失效以后,必须尽快修复,因为etcd集群正常运行的必要条件是集群中多数节点都正常工作。

 

本文转载自:http://blog.csdn.net/shukebai/article/details/53464887

共有 人打赏支持
ND小龙
粉丝 10
博文 45
码字总数 2295
作品 0
福州
etcd:从应用场景到实现原理的全方位解读

原文出自: http://www.infoq.com/cn/articles/etcd-interpretation-application-scenario-implement-principle 随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件...

ponpon_
2017/02/16
0
0
etcd: 从应用场景到实现原理的全方位解读

文章目录 经典应用场景 etcd实现原理解读 随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用强一致性的服务发现存储仓库,渐渐为开发人员所关注。...

John
08/14
0
0
Kubernetes内部组件工作原理介绍

本篇文章讲述了Kubernetes内部组件的工作原理,及创建Pod的流程。如果你是运维人员或者是Kubernetes的使用者,你可以不需要知道Kubernetes的内部工作原理,但是如果你想理解Kubernetes内部的...

Docker
04/25
0
0
Docker学习系列 之etcd(一)etcd简介

Etcd 按照官方介绍 Etcd is a distributed, consistent key-value store for shared configuration and service discovery etcd 是一个分布式一致性键值存储,用于共享配置和服务发现,专注于...

ponpon_
2017/02/16
0
0
etcd安装部署及数据同步MySQL

一、etcd说明及原理 二、etcd安装部署说明 三、etcd操作说明 四、python安装etcd 五、python-etcd使用说明 六、通过脚本获取本地的信息上传到etcd 七、通过脚本将etc的数据同步到mysql 一、e...

ckl893
2017/03/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0
java大数据转换16进制转10进制

public static void main(String[] args) {String hex = "0xdbf3accc683297cf0000";BigInteger amount = new BigInteger(hex.substring(2), 16);System.out.println(amount);......

任梁荣
昨天
2
0
OSChina 周六乱弹 —— 目测我们程序员丁克的几率不大

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @真Skr小机灵鬼儿:8.13分享Jocelyn Pook/Russian Red的单曲《Loving Strangers》 《Loving Strangers》- Jocelyn Pook/Russian Red 手机党少...

小小编辑
昨天
13
3
TypeScript基础入门 - 函数 - 剩余参数

转载 TypeScript基础入门 - 函数 - 剩余参数 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部