ZooKeeper 分布式应用的协调器.

Slides:



Advertisements
Similar presentations
電機電子群 培養學生具備電機與電子群共同核心能力,使具備電機與電子領域有關操作、維修、測試、應用等實用專 業技能。並為相關專業領域之學習或高一層級專業知能之進修奠定基礎。
Advertisements

美味料理 5223汪芮臣.
〈廉頗藺相如列傳〉 鬚眉畢動、聲色如生.
计算机网络基础 主讲:华蓓 实验室:电一楼(安徽省计算与通讯软件重点实验室) Tel:
21世纪全国高职高专 计算机系列实用规划教材 计算机网络技术基础 主 编: 杨瑞良 李 平 副主编: 邱 涛 李明龙.
公司保密工作要求及 院商秘保护工作安排 2014年9月12日.
肝硬化门脉高压性首次 出血的预防.
订单合并拆分功能详解 荷叶.
网上疯传的一条微博: 早上。买两根地沟油油条。切个苏丹红咸蛋。冲杯三聚氢氨奶。吃完开锦湖轮胎的车去上班。
校园信息管理系统 河北科技大学网络中心 2000/4/10.
第九讲 医院信息系统应用——住院子系统一.
盘中顶底早知道 金牌讲师:高俊 ID:
穆公(朱金清 微博:淘穆公 阿里HBase业务设计实践 穆公(朱金清 微博:淘穆公
C#程序设计案例教程 第3章 程 序 结 构.
云计算突飞猛进.
徵收苗栗市福全段147、1588及文心段10、11地號等4筆土地之
第 八 章 交互结构(2).
11.3 国产大数据库技术 阿里巴巴OceanBase 云创存储数据立方(DataCube)
多核体系结构与并行编程模型 计算机科学导论第八讲
讲 义 大家好!根据局领导的指示,在局会计科和各业务科室的安排下,我给各位简要介绍支付中心的工作职能和集中支付的业务流程。这样使我们之间沟通更融洽,便于我们为预算单位提供更优质的服务。 下面我主要从三方面介绍集中支付业务,一是网上支付系统,二是集中支付业务流程及规定等,
第九章 竞争性营销战略 学习目标:  &      掌握识别竞争者的主要方法 &      了解市场领导者、市场挑战者、市场跟随者及市场补缺者的战略。
尼希米記大綱.
中国人民公安大学经费管理办法(试行) 第一章总则 第四条:“一支笔” “一支笔”--仅指单位主要负责人。负责对本 单位的经费进行审核审批。
伟大是熬出来的 徐书杭 江苏省中西医结合医院 内分泌代谢病院区.
『日韩动漫对于校园气氛的影响』 结题报告 陈经纶中学初一(3)班 唐漪澜小组.
基金投資與選擇 景氣循環週期 績效篩選---「四四三三法則」 績效篩選---晨星基金評鑑篩選參考 績效篩選---理柏基金指標評估參考
2015【米蘭世博】讓食物與人的關係 回歸誠實與透明,直擊「未來超市」
工業局推動性別主流化 經濟部工業局 何專門委員紀芳 104年12月2日.
科學科 污染 空氣 成因 的 : 題目 及 減少空氣污染的方法 陳玉玲 (4) 姓名 : 去到目錄.
《计算机网络技术》 asp.net 程序设计 文本类控件 笪静.
服務聯網地政雲.
| 台南市教育局資訊中心 教育雲 飛番雲端中心 儲存雲與平台發展
厦门大学数据库实验室NoSQL系列学习之
CHAPTER 6 認識MapReduce.
开源云计算系统简介 电子工业出版社 刘鹏主编《云计算》教材配套课件11.
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
Bigpipe 简化HTTP异步调用.
《大数据技术原理与应用》 第十二讲 图计算 (2016春季学期)
Hadoop.
使用ADO.NET访问数据 数据库连接 C#程序设计课程组.
Cloud Computing Google云计算原理.
指導老師:王偉德老師 學生:詹翔森 曾仲凱 吳德漢 溫植琪 游詩韻
蔡哲民 信望愛聖經網站董事與技術組負責人 崑山科技大學資訊傳播系助理教授
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
Unit 05 雲端分散式Hadoop實驗 -I M. S. Jian
OceanBase 0.4:从API到SQL 日照
(輕量化)中小學教師專業發展 線上課程學習平台
课程建设汇报 方宝富 合肥工业大学
網際網路與電腦應用 林偉川 2001/12/13.
微信商城系统操作说明 色卡会智能门店.
2019/5/3 JAVA Socket(UDP).
2.1 高職與私立學校註冊操作說明 (2015/9/15上線)
105學年度第二次 總務會議 106年03月28日(二) 下午14:00 第二教學研討室.
中国农业科学院博士后学术论坛 博士后基金申请的经验及体会 中国农业科学院生物技术研究所 秦 华 博士
第11章 安全管理 教学提示:数据库安全是关系数据库中的非常重要的方面,包括了系统安全、数据安全、资源管理、用户管理、权限管理、角色管理、口令管理以及授权、认证、审计等相当多方面的内容。本章讲述有关数据库安全方面的知识。 数据库系统的安全性是每个数据库管理员都必须认真考虑的问题。SQL Server.
教育部特殊教育通報網 學生異動、接收操作說明.
第 4 章 資訊技術 授課教師:__________ 工業工程與管理概論 陳潭,洪堯勳,姚銘忠,黃欽印 著 前程文化出版.
聰明管理零用錢 主講人:高鳳儀 行政院金融監督管理委員會銀行局 指導 中華民國銀行公會暨信合社聯合社 主辦.
Cloud Computing Google云计算原理.
台灣博碩士論文知識加值系統 萬能科技大學博碩士論文系統
信息资源管理复习.
學校/系所名稱:樹德科技大學/資訊工程系 參賽隊名:宇宙小超人 參賽同學:沈盈哲、候坤誠、康庭飴、蔡佩諭 指導老師:程毓明教授
学习单元3 钢的热处理.
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
大綱 一.受試者之禮券/禮品所得稅規範 二.範例介紹 三.自主管理 四.財務室提醒.
手机淘宝“变形”产品—微淘 操作流程指南 (内测版).
第4章 闪烁霓虹灯--层布局的应用 授课老师:高成珍 QQ号: QQ群: 、
判斷(選擇性敘述) if if else else if 條件運算子.
第十二章 Java网络编程 1.URL编程 2.Socket网络编程 3.Datagram网络编程.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

ZooKeeper 分布式应用的协调器

主要内容 ZooKeeper的数据模型 ZooKeeper的数据读写机制 ZooKeeper的使用方法

为什么需要ZooKeeper? 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等) 目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器 ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用(如,为HBase提供服务)

ZooKeeper的数据模型 层次化目录结构 命名符合常规文件系统规范, 不能包含/ 节点Znode可以包含数据与子 节点 客户端应用可在节点上设置 监视器 节点数据不支持部分读写, 而是一次性完整读写 临时性节点

节点创建属性 Sequence 临时性节点 创建的节点不是持久节点 一旦与客户端的会话结束,节点自动删除 创建节点时,编号自动加1 例如x-1,x-2,s-3,x-4等

ZooKeeper的读写机制 ZooKeeper是一个由多个Server组成的集群 一个Leader,多个Follower 全局数据一致 分布式读写 更新请求转发,由Leader实施

使用ZooKeeper的约定 更新请求顺序执行 数据更新原子性 全局唯一数据视图 实时性 来自同一个Client的更新请求按其发送顺序依次执行 数据更新原子性 一次数据更新要么成功,要么失败。不存在部分数据写入成功或失败的情况 全局唯一数据视图 Client无论连接哪个Server,数据视图都是一致的 实时性 在一定时间范围内,Client能读到最新数据

ZooKeeper的API String create(path, data, acl, flags) void delete(path, expectedVersion) Stat setData(path, data, expectedVersion) (data, Stat) getData(path, watch) Stat exists(path, watch) String[] getChildren(path, watch) void sync(path) Stat setACL(path, acl, expectedVersion) (acl, Stat) getACL(path) 包含监视器 调用参数均包含节点路径

仅Open包含节点路径,生成handle供其他API使用 对比:Chubby的API handle Open(path,…)‏ Close(handle,…)‏ GetContentsAndStat(handle,…), GetStat(handle), ReadDir(handle,…)‏ SetContents(handle), SetACL(handle,…)‏ Delete(path)‏ Acquire(), TryAcquire(), Release()‏ GetSequencer(), SetSequencer(), CheckSequencer()‏ 仅Open包含节点路径,生成handle供其他API使用

如何使用ZooKeeper? 关于ZooKeeper的锁服务 这里的“锁”并非对ZooKeeper的资源加锁,用于对第三方资源加锁 用例 多个第三方分布式Server需要使用某第三方资源,谁获取了ZooKeeper中的独占锁,谁就可以使用第三方资源,否则等待

getData设置了监视器,如果数据发生变化, 如何使用ZooKeeper? Leader选举 用于在多个节点中选取主控,如GFS中对外服务Master节点的选取 1)getData(“/servers/leader”, true) 2)如果读取成功则从数据中获取leader信息,退出 3)读取失败,执行create(“.../servers/leader”, hostname, EPHEMERAL)(注意节点类型) 如果创建成功则自己成为leader,写入信息,退出 5)如果写入失败,则返回步骤1 getData设置了监视器,如果数据发生变化, 会重启上述流程

有且仅有一个Client可以获取到独占锁 如何使用ZooKeeper? 独占锁 如果分布式应用需要对某资源独占使用,可以申请独占锁 1)id = create(“.../locks/x-”, SEQUENCE|EPHEMERAL) 2)getChildren(“.../locks/”, false) 3)如果id是第一个节点,则获取独占锁,退出 4)exists(name of last child before id, true)(注意,设置了监视器) 5)如果id之前不存在节点,返回步骤2 6)等待通知 7)返回步骤2 有且仅有一个Client可以获取到独占锁

如何使用ZooKeeper? 共享锁 如果之前没有独占锁,就可以获取共享锁 1)id = create(“.../locks/s-”, SEQUENCE|EPHEMERAL) 2)getChildren(“.../locks/”, false) 3)如果id之前没有x-类型的节点,获取共享锁,退出 4)exists(name of the last x- before id, true) 5)如果id之前不存在x-类型节点,返回步骤2 6)等待事件通知 7)返回步骤2 如果之前没有独占锁,就可以获取共享锁

如何使用ZooKeeper? 其他应用(小数据存储) 例如,GFS中master如何获知ChunkServer信息? 1)id = create(“.../chunkservers/cs-”, SEQUENCE|EPHEMERAL) 2)向节点id中写入ChunkServer元信息 Master执行如下操作: 1) getChildren(“.../chunkservers/”, true) 2)读取子节点数据,获知ChunkServer元信息

其他 ZooKeeper的会话 ZooKeeper的监视器 Client通过发送PING请求与Server保持会话 通过PING,可以同时获知Client与Server是否活跃 ZooKeeper的监视器 监视器是一次性的,一次事件通知后就作废

性能 ZooKeeper适用于主要 负载为读的应用场合