如何基于ZK实现高可用架构
zookeeper设计步骤
设计path 节点的路径
选择znode类型 普通节点、临时节点等
设计znode数据 节点中的数据
设计watch 节点的监听事件以及对应的处理
ZK实现主备切换架构
1、设计2个临时节点 master slave
2、master节点挂掉时 slave升级master
3、由于切换时可能会数据冲突,master节点需要记录时间
4、节点启动时尝试创建master节点,如果失败则创建slave节点。 当slave节点收到master丢失的事件时,尝试创建master节点,如果成功删除slave节点。
ZK实现集群选举
1、最小节点数获胜
共用parent node,集群中每个节点在parent node下创建节点
当leader节点挂掉时,编号最小的znode成为leader,因此使用临时有序节点
根据业务写入节点
启动后在parent节点下创建有序的临时节点;编号最小的znode成为leader; 当parent下节点删除时判断是否为leader
2、抢建唯一节点
所有节点只有一个leader 节点,本质上是一个分布式锁。
当leader挂掉时,所有节点抢注leader节点,谁抢到是谁的。所以用临时节点。
根据业务写入数据
启动后所有节点抢注leader,监控到leader删除后所有节点抢注leader
3、法官判决
共用父节点
编号最小的成为法官,因此使用有序临时节点
根据业务需要写入数据,比如事务的ID
编号最小的节点成为法官,法官负责选举规则,监听到节点删除时所有节点更新选举数据,法官读取所有节点数据根据算法选出leader并写入父节点,所有节点监听父节点确认自己是不是leader


如何基于ZK实现高可用架构的更多相关文章
- 实现基于Keepalived主从高可用集群网站架构
背景 上一期我们实现了基于lvs负载均衡集群的电商网站架构,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展 ...
- 实现基于Haproxy+Keepalived负载均衡高可用架构
1.项目介绍: 上上期我们实现了keepalived主从高可用集群网站架构,随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务 ...
- 美团点评基于MGR的CMDB高可用架构搭建之路【转】
王志朋 美团点评DBA 曾在京东金融担任DBA,目前就职于美团点评,主要负责金融业务线数据库及基础组件数据库的运维. MySQL Group Replication(以下简称MGR),于5.7.17版 ...
- 基于Consul的数据库高可用架构【转】
几个月没有更新博客了,已经长草了,特意来除草.本次主要分享如何利用consul来实现redis以及mysql的高可用.以前的公司mysql是单机单实例,高可用MHA加vip就能搞定,新公司mysql是 ...
- 032:基于Consul和MGR的MySQL高可用架构
目录 一.Consul 1.Consul简介 2.准备环境 3.Consul 安装 4.Consul配置文件 5.Consul 服务检查脚本 6.Consul启动 二.MGR搭建 1.MGR配置 2. ...
- mysql +keeplive+drbd高可用架构(MHA基于监听端口VIP的高可用)
1MySQL+DRBD+keepalived高可用架构 DRBD(DistributedReplicatedBlockDevice)是一个基于块设备级别在远程服务器直接同步和镜像数据的开源软件,类似于 ...
- 【转】单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构
此文是根据杨尚刚在[QCON高可用架构群]中,针对MySQL在单表海量记录等场景下,业界广泛关注的MySQL问题的经验分享整理而成,转发请注明出处. 杨尚刚,美图公司数据库高级DBA,负责美图后端数据 ...
- 【亲述】Uber容错设计与多机房容灾方案 - 高可用架构系列
此文是根据赵磊在[QCON高可用架构群]中的分享内容整理而成.转载请事先联系赵磊及相关编辑. 赵磊,Uber高级工程师,08年上海交通大学毕业,曾就职于微软,后加入Facebook主要负责Messen ...
- 分布式架构高可用架构篇_07_MySQL主从复制的配置(CentOS-6.7+MySQL-5.6)
参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...
- [转载] 单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构
原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=209406532&idx=1&sn=2e9b0cc02bdd ...
随机推荐
- JS下载单个图片、单个视频;批量下载图片,批量下载视频
下载单张图片 import JSZip from "jszip"; import FileSaver from "file-saver"; downloadIa ...
- 【C学习笔记】day3-3 编写程序数一下 1到 100 的所有整数中出现多少个数字9
#include <stdio.h> int main() { int cou=0; for (int i = 1; i <= 100; i++) { if (i % 10 == 9 ...
- 在使用IDEA提交git代码时,如何修改提交者的名字
在Terminal终端中输入 git config user.name git config --global user.name "xl"
- 创建一个spring项目
- js网页禁止右键下载代码
<script type="text/javascript"> //禁用右键 document.onkeydown = function() { var e = win ...
- SAR成像(四):多普勒频移的计算
雷达系统中,雷达与目标间的相互运动会使回波信号产生频移,称为多普勒效应,对应的频移称为多普勒频率. 假设雷达发射信号为单频连续波, f ( t ) = c o s ( 2 π f 0 t + ϕ ) ...
- CentOS7下MySQL数据的导入和导出
一.数据导入 (1)进入mysql [root@localhost mysql]# mysql -u root -p (2)转到对应数据库下 mysql> use zenith_star; (3 ...
- 二进制安装docker-20.10.9
二进制包下载地址:https://download.docker.com/linux/static/stable/x86_64/ #解压tar xf docker-20.10.9.tgz #拷贝二进 ...
- Darknet网络代码
Darknet网络代码 import math from collections import OrderedDict import torch import torch.nn as nn impo ...
- thirty-two(模型点击展示)react-three-fiber
模型点击蒙版展示 点击展示目的(用户需要看见模型中更加多的内容信息) 使用技术 ThreeJs.React-three-fiber.React-three-drei.React.css 整体思路: ...