Zookeeper从入门到删库跑路

导语
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookeeper的目的就在于此。
通俗来讲,ZooKeeper只是一个持久化存储工具。这个存储工提供了增删改查以外的一些分布式系统在进行通信时需要的基础特性,如具有父子关系的树形数据节点,节点临时性,节点顺序性,节点修改事件的发布订阅,zk集群高可用和强一致等等。这些特性就像是基础的加减乘除,开发人员利用zk的这些基础特性,与业务进行组合,可以实现诸多分布式系统需要的功能,如命名服务,分布式锁,分布式服务的动态发布的订阅等等。因此,zk的应用场景是丰富的,在分布式系统的业务开发过程中,只要我们有足够的想象力,总是能够利用那些加减乘除构建出我们需要的业务。所以说zk值得身处处处都是分布式的互联网时代的我们学习和掌握。掌握zk是当代java开发同学们必备的一个基础技能,就像是mysql和redis一样。
本文不会手把手教学zk的api,而是用一种俯视的姿态来理解zk。理解完了之后,写代码需要的就只有想象力和google了。真正做到了无招胜有招,不教api胜过教api。
ZK概述
首先,zk服务端是纯java实现,这一点就会让诸多java开发同学感到畏手畏脚,觉得zk的学习是不是要去瞅源码啊,那岂不是很难。这种先入为主的观念是错误的。除非你想到zk项目仓库提交代码做贡献,不然作为单纯使用者的你是不用去关注zk服务端的实现的。可以类比mysql,mysqld是c语系的实现,那么在日常工作使用中除了想要拔高学习,你有想过去看看它的源码吗?因此,和msyql一样,zk服务端对于我们普通开发人员来说其实是透明的,我们只需要在项目中集成zk的sdk也就是类似mysql 驱动,驱动利用传输层网络协议与服务端通信,而我们就可以利用驱动暴露的接口进行业务开发。
基于上面的假设,zk和mysql一样,都是提供持久化存储服务的工具,只是除了增删改查外各自提供的特性不同。那么接下来就很好理解了。
ZK安装运维
zk的安装运维不是本文的重点。这部分内容参考zookeeper安装即可。本质上来说其实就是配置部署一个java应用,这个应用可以集群部署用来提高可用性。至于集群间读写分离,数据同步等内容对于使用者来说是透明的,由zk集群实例依照zab协议自动进行。其中的实例角色如领导者,观察者,追随者在集群启动过程中自动选举产生。如无绝对必要,那就让子弹飞吧。
ZK客户端组成
和mysql一样,zk的客户端分为两个部分。一个是基于命令行的黑窗口。一个是zk连接驱动。zk是java实现,那么zk命令行的启动需要JRE。在zk的bin目录下,根据平台执行cli启动脚本即可打开命令行客户端,默认连接localhost。该客户端有许多命令,同时支持自动补全。这部分一般在调试阶段使用,用的也很少。详细
除此之外,就是用于和自己的项目集成的zk 驱动了。和msyql一样,虽然zk服务端是纯java实现,但是zk驱动提供了多种语言的实现,如python,c,java等,可以和多种语言生态的应用进行整合,利用tcp等传输层协议与服务端通信,提供操作zk的接口。mysql也如此,给各个语言生态的应用提供了驱动,与服务端通信,提供了操作mysql数据的接口。
本文主要讲解zk在java生态中的使用。
ZK驱动
Zookeeper从入门到删库跑路的更多相关文章
- SQL 从入门到 DBA 删库跑路
SQL 从入门到 DBA 删库跑路 一.基础 人员信息表: ID 姓名 性别 出生 婚否 学历 工资 工会 35009449 孙xx 男 1978-2-17 未婚 中专 3000 TRUE 35000 ...
- Oracle删库跑路
--10g R2 startup mount exclusive restrict; alter system enable restricted session; drop database; -- ...
- P5270 无论怎样神树大人都会删库跑路
题目地址:P5270 无论怎样神树大人都会删库跑路 第一眼看上去是模拟,似乎是 \(O(n)\) 的 水题 信心满满的写完: #include <bits/stdc++.h> using ...
- 数据误操作,删库跑路?教你使用ApexSQLLog工具从 SQLServer日志恢复数据!
前几天同事不小心误操作,将SQLServer库的一张表的一个状态字段给刷成了一个统一状态,由于是update执行所以原来的相关状态无法确定.发生这种事情的时候我的小伙伴背后 一凉,估计心里里面想这怕是 ...
- Mysql binlog备份数据及恢复数据,学会这个,我在也不怕删库跑路啦~
导读 我一直都主张,技多不压身(没有学不会的技术,只有不学习的人),多学一项技能,未来就少求人一次.网上经常听到xxx删库跑路,万一真的遇到了,相信通过今天的学习,也能将数据再恢复回来~~~ 当然啦, ...
- 教你如何6秒钟往MySQL插入100万条数据!然后删库跑路!
教你如何6秒钟往MySQL插入100万条数据!然后删库跑路! 由于我用的mysql 8版本,所以增加了Timezone,然后就可以了 前提是要自己建好库和表. 数据库test, 表user, 三个字段 ...
- 【巨杉数据库SequoiaDB】巨杉Tech | “删库跑路”又出现,如何防范数据安全风险?
最近,又双叕有企业被“删库”了.来自微盟官网的消息,微盟的业务系统数据库(包括主备)遭遇其公司运维人员的删除,系统将停止运营超48小时. 频发的类似事件也让大家对于数据安全的关注不断提高.数据是一个科 ...
- The Data Way Vol.3|做到最后只能删库跑路?DBA 能做的还有很多
关于「The Data Way」 「The Data Way」是由 SphereEx 公司出品的一档播客节目.这里有开源.数据.技术的故事,同时我们关注开发者的工作日常,也讨论开发者的生活日常:我们聚 ...
- 大数据开发从入门小白到删库跑路(一)- 获取Hadoop
Hadoop是一个可以通过相对简单编程模型实现跨多台计算机集群分布式处理大型数据集的框架.它不是依赖于高额成本的硬件可靠性来提供高可用性,Hadoop的设计能从单个服务器扩展到数千台机器,每个机器提供 ...
随机推荐
- 省市县sql
create table SYS_AREA ( ID NUMBER(18) not null, AREA_CODE VARCHAR2(50) not null, AREA_NAME VARCHAR2( ...
- vulnhub靶机练习-Os-Hax,详细使用
Difficulty : Intermediate Flag : boot-root Learing : exploit | web application Security | Privilege ...
- 【BFS】hdu 1973 Prime Path
题目描述: http://poj.org/problem?id=3414 中文大意: 使用两个锅,盛取定量水. 两个锅的容量和目标水量由用户输入. 允许的操作有:灌满锅.倒光锅内的水.一个锅中的水倒入 ...
- Codeforces Round #655 (Div. 2) A. Omkar and Completion
题目链接:https://codeforces.com/contest/1372/problem/A 题意 构造一个大小为 $n$ 的数组 $a$,要求满足 $1 \le a_i \le n$,且不存 ...
- Codeforces Global Round 9 A. Sign Flipping
题目链接:https://codeforces.com/contest/1375/problem/A 题意 给出一个大小为 $n$ 的数组 $a$,可以反转每个数的正负,要求: 至少有 $\frac{ ...
- HDU4366 Successor【dfs序 分块】
HDU4366 Successor 题意: 给出一棵根为\(1\)的树,每个点有两个权值\(x,y\),每次询问一个点的子树中\(x\)比这个点的\(x\)大且\(y\)值最大的那个点 题解: 如果以 ...
- Codeforces Round #649 (Div. 2) B. Most socially-distanced subsequence
题目链接:https://codeforces.com/contest/1364/problem/B 题意 给出大小为 $n$ 的一个排列 $p$,找出子序列 $s$,使得 $|s_1-s_2|+|s ...
- Luogu T10025 排列名次
题目链接 题目描述 给定一个长度为n的排列,要求输出该排列的字典序名次(1,2,3,...,n的名次为1). 输入输出格式 输入格式: 第一行一个数n,表示排列长度. 第二行n个数,用空格分隔,表示一 ...
- poj1061青蛙的约会 (扩展欧几里德)
Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事 ...
- 2015ACM/ICPC亚洲区沈阳站-重现赛 M - Meeting (特殊建边,最短路)
题意:有\(n\)个点,\(m\)个集合,集合\(E_i\)中的点都与集合中的其它点有一条边权为\(t_i\)的边,现在问第\(1\)个点和第\(n\)个点到某个点的路径最短,输出最短路径和目标点,如 ...