文档章节

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

ND小龙
 ND小龙
发布于 2017/08/14 01:01
字数 1049
阅读 86
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

5whys分析法在美团工程师中的实践

前言 网站的质量和稳定性对于用户和公司来说至关重要,但是在网站的快速发展过程中,由于各种原因导致事故不可避免的发生,这些大大小小的事故对公司难免会造成一些负面的影响,为了避免同类...

Skqing
21分钟前
0
0
Android 接收监听开机完成,并且开机自启动

1,定义一个广播接收者的类 ,并重写抽象方法 public class BootCompleteReceiver extends BroadcastReceiver 2,在Androidmanifest 注册 <receiver android:name=".receiver.BootCompleteRece......

lanyu96
24分钟前
1
0
小程序记录

1、button的边框、角等需要在伪元素after修改去除

originDu
26分钟前
0
0
微博什么技术啊……还说支持八个明星并发出轨,结果…

是的,大家可能都知道了,女神张靓颖结婚了。。 我去,写错了,是————赵丽颖。 为什么我头脑一瞬间出现的是张靓颖,作为一个码农,技术宅,拼音缩小都是 ZLY,博主我真有点傻傻分不清楚了...

Java技术栈
27分钟前
3
0
模块化

1,什么是模块化? 模块化是指将一个复杂的系统分解为多个模块,方便编码。 2,为什么要用模块化? 降低复杂性,降低代码耦合度,部署方便,提高效率。 3,模块化的好处? a,避免命名冲突,减少...

羊皮卷
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部