Mesos实践:基于MZM的PAAS的构建(2):Zookeeper简介
为分布式微服务框架提供合适的PAAS平台,使用成熟的M(Mesos)Z(Zookeeper)M(Marathon)可以作为选择之一。在本文中将会对Zookeeper进行简单的介绍。
URL | https://zookeeper.apache.org/ |
---|
什么是Zookeeper
Zookeeper原本是Apache Hadoop的一个子项目,目的是用于提供高性能的开放源码的分布式分布式应用协调服务。主要用来解决分布式应用中的数据管理的一些问题,主要的应用场景比如:
- 服务的统一命名
- 服务的状态同步
- 集群管理之Leader选举
- ……
除了在Mesos中的使用, Zookeeper还在Kafaka和Solr Cloud等项目中有着广泛的应用。
集群Leader选举
应用于此种场景之下的Zookeeper需要有至少3个节点的集群才能正常工作,类似于民主国家的议会,再少的话就不用选举了。
这种情况下的角色被分成Leader和follower以及observer三种。
角色 | 职能说明 |
---|---|
Leader | 被选出来的管理者,用来管理集群 |
follower | 用于选举管理者,同时是Leader的候选,当Leader发生故障时,要从follower中继续选举出接下来的。 |
observer | 基本和follower一致,唯一不同是不参与选举以及不具有作为候选的资格,接受选举和投票的结果。 |
运行模式
Zookeeper可以单机运行(standalone模式)也可以在多节点的集群(quorum)中运行,因为本身Zookeeper就是作为为解决分布式系统协调相关的问题而出现的,这里着重介绍quorum运行模式下zookeeper是如何工作的。
quorum意思是法定人数,使用这种模式的时候,所有的节点在启动的时候会发区一次选举,投票超过最多法定人数的节点将成为Leader。
数据模型和层次结构
使用quorum的模式,因为有多个节点构成,多个节点之间不可避免地会出现数据的同步等操作,这就需要了解Zookeeper的数据模型。如下图所示,Zookeeper的数据模型和层次结构有点类似文件系统。
图中的数型结构的每一个节点,都类似于文件系统中文件和目录的概念。这些节点,在Zookeeper中被称为znode,之所以是数据模型,这些znode中可以保存一些额外的信息,诸如状态或者配置等。
但是需要注意的是这些信息应该是非常小的,就像你不会在LDAP的树型结构中存放1个小时的视频介绍作为Description的内容一样,这里的数据结构的size最好在KB之内。
znode数据结构
成员 | 描述 |
---|---|
czxid | The zxid of the change that caused this znode to be created. |
mzxid | The zxid of the change that last modified this znode. |
ctime | The time in milliseconds from epoch when this znode was created. |
mtime | The time in milliseconds from epoch when this znode was last modified. |
version | The number of changes to the data of this znode. |
cversion | The number of changes to the children of this znode. |
aversion | The number of changes to the ACL of this znode. |
API
Zookeeper还提供了简单的编程接口,比如:
API | 说明 |
---|---|
create | creates a node at a location in the tree |
delete | deletes a node |
exists | tests if a node exists at a location |
get data | reads the data from a node |
set data | writes data to a node |
get children | retrieves a list of children of a node |
sync | waits for data to be propagated |
CentOS7上的安装
yum install -y mesosphere-zookeeper
设定
设定文件:/etc/zookeeper/conf/zoo.cfg
项目 | 详细说明 |
---|---|
tickTime | ZooKeeper服务端和客户端的心跳时间间隔,单位是毫秒。 |
dataDir | 保存数据和日志的目录。 |
clientPort | 客户端连接的端口,ZooKeeper服务端会监听此端口,默认是 2181。 |
server.X | IP:PORT1:PORT2 -> X:个表示服务器序号的数字,比如1,2,3等 |
IP: 服务器ip地址
PORT1: 通讯端口
PORT2: Leader选举所用端口
启动/停止/确认状态
CentOS下使用systemctl即可对zookeeper的进行启动/停止/状态确认。
启动:systemctl start zookeeper
启动:systemctl stop zookeeper
启动:systemctl status zookeeper
Mesos实践:基于MZM的PAAS的构建(2):Zookeeper简介相关推荐
- Mesos实践:基于MZM的PAAS的构建(3):Marathon简介
为分布式微服务框架提供合适的PAAS平台,使用成熟的M(Mesos)Z(Zookeeper)M(Marathon)可以作为选择之一.在本文中将会对Marathon进行简单的介绍. URL https: ...
- Mesos实践:基于MZM的PAAS的构建(1):Mesos简介
前几天介绍了如何使用Spring Cloud搭建分布式的微服务框架,在接下来的这系列的文章中将会介绍如何构建简单的为微服务框架提供服务的PAAS平台.使用成熟的M(Mesos)Z(Zookeeper) ...
- Mesos实践:基于MZM的PAAS的构建(4):环境搭建
为分布式微服务框架提供合适的PAAS平台,使用成熟的M(Mesos)Z(Zookeeper)M(Marathon)可以作为选择之一.本文将介绍一下如何在CentOS7下进行环境的搭建,同时将搭建的脚本 ...
- Flink CDC入门实践--基于 Flink CDC 构建 MySQL 和 Postgres 的 Streaming ETL
文章目录 前言 1.环境准备 2.准备数据 2.1 MySQL 2.2 postgres 3.启动flink和flink sql client 3.1启动flink 3.2启动flink SQL cl ...
- 企业为什么要使用基于Docker的PaaS/CaaS平台
作者:精灵云 前言 早在十多年前国内外的一些大厂就开始投入研发和使用容器技术,比如Google,对他们来说,使用容器能够充分利用计算资源节省硬件成本.而这几年--众所周知--真正把容器技术发扬光大的是 ...
- 如何选择基于 Kubernetes 的 PaaS?
作者 | Bram Dingelstad 译者 | 弯月,责编 | 郭芮 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 我们都遇到过这种情况:有人发现了一个bug, ...
- 基于koajs的web项目构建-心得篇
2019独角兽企业重金招聘Python工程师标准>>> 根据 基于koajs的web项目构建-入门篇 所描述的,建立了项目的基本目录结构,接下来的工作便是编码,编译,测试,发布.做为 ...
- 知识图谱入门2-1:实践——基于医疗知识图谱的问答系统
注:欢迎关注datawhale:https://datawhale.club/ 系列: 知识图谱入门一:知识图谱介绍 知识图谱入门2-1:实践--基于医疗知识图谱的问答系统 知识图谱入门2-2:用户输 ...
- 机器学习实践—基于Scikit-Learn、Keras和TensorFlow2第二版—第9章 无监督学习技术(Chapter9_Unsupervised_Learning_Techniques)
机器学习实践-基于Scikit-Learn.Keras和TensorFlow2第二版-第9章 无监督学习技术(Chapter9_Unsupervised_Learning_Techniques) 虽然 ...
最新文章
- 符号主义对深度学习的意义浅谈
- [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程
- 面试官:聊聊你对分布式锁技术方案的理解
- 【Qt】Qt5.9编译MySQl5.7驱动
- return true Java方法_java - 如何检查方法是否返回true或false?_java_酷徒编程知识库...
- 二十四种设计模式:代理模式(Proxy Pattern)
- 1261:【例9.5】城市交通路网 《信息学奥赛一本通:动态规划基础》
- Linux驱动(7)--最简单的驱动HelloWorld
- 用asp.net获取服务器和客服端有关信息
- if语句中的赋值与判断
- 基于Spring Cloud的微服务架构
- 设计模式之——建造者模式
- 计算机符号大全名字大全,符号大全_特殊符号网名大全
- 现代Web发展趋势和前沿技术综述
- 什么是光电耦合器?光耦有哪些类型
- 计算机一直黑屏,win7系统显示器黑屏但电脑一直在运行如何解决
- bzGhost 打造跨平台即时聊天软件之websocket
- 服务器系统漏洞rc4,服务器如何修复旧加密算法漏洞
- 【解锁】Pandoc——Pandoc安装、使用、快速上手
- oracle软件工程,.Net软件工程师学用Oracle系列(9):系统函数(上)
热门文章
- python递归函数公式_python之内置函数,匿名函数,递归函数
- 菜品管理(两表关联进行分页查询)
- 【Tools-Mujoco】创建自定义的Mujoco模型
- 服务器到服务器 (S2S) 事件 (Adjust)
- 男人必吃的12种健康食物,程序员更得看看!
- SourceForge访问方法,解被封痛苦之中国伟大的程序员们!
- 01_html(跟着宝哥学java:ee)html概念 常用标签 html练习
- 多因子跟庄吃肉 抓涨停指标公式 涨停主图指标 通达信 源码
- 分布式系统数据信息唯一标识之UUID
- 如何使用Gradle创建发布签名的apk文件?