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的设计能从单个服务器扩展到数千台机器,每个机器提供 ...
随机推荐
- JYM虚拟机性能监控与故障处理工具
虚拟机性能监控与故障处理工具 一.jps:虚拟机进程状况工具 常用指令 二.jstat:虚拟机统计信息监视工具 常用指令 三.jinfo:配置信息工具 四.jmap:Java内存映像工具 常用指令 五 ...
- (转)pip和easy_install使用方式
easy_install 跟 pip 都是 Python 的套件管理程式,有了它們,在使用 Python 開發程式的時候會帶來不少方便. easy_install 和 pip 有什麼不一樣?據 pip ...
- 文本处理三剑客简介(grep、awk、sed)
本章内容: 命令 描述 awk 支持所有的正则表达式 sed 默认不支持扩展表达式,加-r 选项开启 ERE,如果不加-r 使用花括号要加转义符\{\} grep 默认不支持扩展表达式,加-E 选项开 ...
- 37.Samba 文件共享服务1--配置共享资源
1.Samba 服务程序的主配置文件包括全局配置参数和区域配置参数.全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效.区域配置参数则用于设置单独的共享资源,且仅对该资源有效. ...
- 修改PowerShell的输入提示符
如下图,"PS C:\Windows\System32\drivers\etc>" 就是PowerShell的输入提示符,默认是显示"PS"加上当前所在的 ...
- netty写Echo Server & Client完整步骤教程(图文)
1.创建Maven工程 1.1 父节点的pom.xml代码(root pom文件) 1 <?xml version="1.0" encoding="UTF-8&qu ...
- HDOJ 1242
纠结1242很久了,查了题解才发现要优先队列才能成功 http://blog.chinaunix.net/uid-21712186-id-1818266.html 使人开窍之文章 优先队列,已经不算是 ...
- P3376 [模板] 网络最大流
https://www.luogu.org/blog/ONE-PIECE/wang-lao-liu-jiang-xie-zhi-dinic EK 292ms #include <bits/std ...
- Codeforces Round #649 (Div. 2) C、Ehab and Prefix MEXs D、Ehab's Last Corollary 找环和点染色
题目链接:C.Ehab and Prefix MEXs 题意; 有长度为n的数组a(下标从1开始),要求构造一个相同长度的数组b,使得b1,b2,....bi集合中没有出现过的最小的数是ai. mex ...
- POJ 3281 Dining(最大流板子)
牛是很挑食的.每头牛都偏爱特定的食物和饮料,其他的就不吃了. 农夫约翰为他的牛做了美味的饭菜,但他忘了根据它们的喜好检查菜单.虽然他不可能喂饱所有的人,但他想让尽可能多的奶牛吃上一顿有食物和水的大餐. ...