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的设计能从单个服务器扩展到数千台机器,每个机器提供 ...
随机推荐
- Phoenix简介概述,Phoenix的Java API 相关操作优秀案例
Phoenix简介概述,Phoenix的Java API 相关操作优秀案例 一.Phoenix概述简介 二.Phoenix实例一:Java API操作 2.1 phoenix.properties 2 ...
- linux下mysql基于mycat做主从复制和读写分离之基础篇
Linux下mysql基于mycat实现主从复制和读写分离1.基础设施 两台虚拟机:172.20.79.232(主) 172.20.79.233(从) 1.1软件设施 mysql5.6.39 , my ...
- hbase 集群(完全分布式)方式安装
一,环境 1, 主节点一台: ubuntu desktop 16.04 zhoujun 172.16.12.1 从节点(slave)两台:ubuntu server 16.04 hadoo ...
- ajax带checkbox选择值到后台
function togglefun(checkbox){//全选 $('input[name=cids]').prop('checked', $(checkbox).prop('checked')) ...
- k8s command & args
命令和参数说明: command.args两项实现覆盖Dockerfile中ENTRYPOINT的功能,具体的command命令代替ENTRYPOINT的命令行,args代表集体的参数. 如果comm ...
- linux系统rpm和yum软件包管理
软件安装方式总结 安装软件方式有如下几种: 方式1:编译安装 将源码程序按照需求进行先编译,后安装 缺点:装过程复杂,而且很慢 优点:安装过程可控,真正的按需求进行安装(安装位置.安装的模块都可以选择 ...
- 第2层交换和生成树协议(STP)__散知识点
1.交换式服务 网桥是基于软件的,而交换机使用专用集成电路(ASIC)来创建并维护其过滤表.2层交换机和网桥转发数据的速度比路由器快一些,因为它们不查看网络层报头的信息,不对数据包做任何修改.相反,在 ...
- 2021年的十五个DevOps趋势预测
DevOps已经走过了很长的一段路,毫无疑问,它将在今年继续闪耀.由于许多公司都在寻找围绕其数字化转型的最佳实践,因此了解领导者认为该行业的发展方向非常重要.从这个意义上说,下面的文章收集了DevOp ...
- Codeforces Round #574 (Div. 2) E.OpenStreetMap
题目链接 题目的意思就是给你一个矩阵你要求给定子矩阵的最小值的和 单调队列扫两边即可 #include <bits/stdc++.h> #define ll long long #defi ...
- Codeforces Round #603 C. Everyone is a Winner!
题意:给你一个整数n,求所有n/k的值(k∈{1,2,3...,n,.......}). 题解:最简单的方法是用枚举1~sqrt(n),把除数和商放进set中,就能直接水过,但后来看其他人的题解了解到 ...