Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination。这里是 Zookeeper 官网的第一段话,也解释了 Zookeeper 的作用。Zookeeper 是开源的高可用分布式服务协调者。

一、【分布式】

什么是分布式?

分布式是相对于集中式而言,集中式服务就是所有的服务都在同一台机器上,而分布式服务就是应用服务分布在不同的机器上面。为什么会出现分布式呢?因为随着业务量的增长,流量的暴增,访问服务的用户越来越多,一台机器毕竟硬件条件有限,于是出现性能瓶颈。访问反应速度慢,服务不稳定。如果机器宕机了,那么整个服务都无法访问。这个时候分布式应运而生,所有新模式的出现,技术的更新,其实都是业务推动,需求推动。因为如果你不变革,你就会被淘汰了。

分布式优缺点是什么呢?

 既然是分布式,服务分布在不同机器上面,很自然会有一致性,通信异常,节点故障等问题。大体分为:通信异常、网络分区、三态、节点故障。

通信异常是指网络本身出现问题,网络的不可用,不可靠。分布式各个节点之间需要通信,网络的不通就会造成数据不一致性。

网络分区是指不同的机器分布在不同的网络环境,你无法保证每个网络都是畅通的。网络异常会导致分布式中部分节点之间通信延时,最终只有一部分节点通信正常,而其他一部分节点则不能通信,我们称这个为网络分区,俗称脑裂。

三态是指成功、失败、超时。这个在我们开发过程中经常遇到。在网络异常情况,就会出现超时,超时也有两种情况:一是由于网络问题,消息并没有成功发送到接收者,导致没有返回,所以超时。二是消息成功发送了,接收着成功接收了,但是在返回响应的时候出现问题,所以超时。

节点故障是指机器故障,机器死机或者僵死现象。

二、【ACID、CAP】

我们谈到分布式不得不提事务和一致性,这个是现实工作中必须面对,必须要解决的问题。ACID 我想大家都很清楚,也是大学数据库课程中很重要的知识点。A 就是 Atomicity 含义是原子性、C 就是 Consistency 含义是一致性、I 就是 Isolation 含义是隔离型、D 就是 Durability 含义是持久性。

 什么是原子性?

事务原子性是指事务必须是一个原子的操作序列单元,要么全部成功,要么全部失败。

什么是事务一致性?

 事务一致性是指事务执行不能破坏数据库的数据完整性和一致性,事务执行前和执行后数据库处于一致性状态。

什么是隔离性?

事务的隔离性是指事务与事务之间是相互隔离的,不会互相影响。这其中就有四种隔离级别:未提交读取、提交读取、可重复读、串行化。这里就不去一一解释了。

什么是持久性?

 事务的持久性是指事务一旦提交,它对数据库中对应数据的状态变更是永久的。

我们再来说说 CAP 理论。

什么是 CAP 理论?

本地事务或者集中式事务,ACID 已经足够用了,它能够保证数据的严格一致性。但是分布式事务,ACID 是不能满足一致性的。

CAP 理论,C 就是 Consistency 一致性、A 就是 Availability 可用性、P 就是 Partition tolerance 容错性。一个分布式系统,不可能同时满足这三个条件,最多只能满足其二。这就是 CAP 理论。现实开发中,容错性是必须的,因为应用分布在不同的机器节点,如果容错性都没有,数据怎么可能是一致的,安全的。所以,分布式系统我们需要去衡量可用性和一致性之间的取舍。这里 CAP 就不去详细介绍了,大家可以自己查资料。

三、【下载 Zookeeper 安装包】

这个很简单,大家去官网 https://zookeeper.apache.org/ 就可以下载到各个版本的安装包。

四、【启动】

win 环境

 进入 zookeeper-3.4.10 目录,这是我下载的版本,在 bin 目录下找到 zkServer.cmd,双击就行了。如果出现闪退现象,可以去 conf 目录下看看,是否有 zoo.cfg 文件,如果没有则自己复制一份,或者直接将 zoo_sample.cfg 修改成 zoo.cfg。

启动完毕如下图:

启动正常,默认端口 2181。

我们通过 zkCli 来连接服务端,看看服务端默认数据结构是什么样子。

双击 zkCli.cmd,如下图

Zookeeper 默认数据节点 zookeeper,关于数据结构,我以后再详细讨论。谢谢大家观看!

聊聊、Zookeeper Windows启动的更多相关文章

  1. Zookeeper Windows版的服务安装和管理工具

    以前研究过负载均衡,最近正在项目上实施(从来没做过小项目以上级别的东西,哈).然后遇到了多个一模一样但是同时运行的服务.不同服务但依赖同相同的配置数据(前端网页服务:Nginx+IIS+nodejs. ...

  2. 如何在 Linux 和 windows 启动使用 Dubbo 和 ZK

    今天的知识点有 3 个: Linux 下安装.配置 JDK. Windows 下启启动 dubbo 和 zookeeper. Linux 下启动 dubbo 和 zookeeper. 1.Linux ...

  3. CentOS 7 恢复 Windows 启动项

    安装Linux时一般会自动识别windows系统并添加引导项,而 CentOS 默认不支持 NTFS 分区,CentOS7采用了Grub2,与CentOS6有区别.手动引导windows分区修改配置稍 ...

  4. 如何让openvpn在windows启动时自动加载

    在非常需要vpn的人群中,他们几乎一整天都连接着vpn,但是每次开机都要连接vpn的过程有时候比较繁琐对于新手而言.这篇文章主要是说明如何在windows启动时自动加载openvpn自动连接,该教程适 ...

  5. DSAPI 添加删除程序到Windows启动

    使用DSAPI.dll中文件类里现成的功能,将使你可以快速高效地实现将程序加入Windows启动项或从启动项中删除. 简单也是非常地简单,但由于是比较独立的功能,所以单独发表为整个篇幅.  DSAPI ...

  6. 如何确定windows启动类型是bios还是uefi

    原文地址:http://www.kqidong.com/bios/3728.html 如何确定windows启动类型是bios还是uefi?随着装机越来越简单,大家对安装系统充满信心,但是了解到启动类 ...

  7. Apache ZooKeeper 服务启动源码解释

    转载:https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper-code/ 本文首先讲解了 Apache ZooKeeper 服 ...

  8. Windows启动配置数据(BCD)存储文件包含一些无效信息

    Windows启动配置数据(BCD)存储文件包含一些无效信息-照牛排 http://www.zhaoniupai.com/archives/223.html 1)近来封装Windows 7,遇到挫折. ...

  9. UEFI下windows启动过程

    引导文件 在UEFI安装完操作系统后,Windows至少使用两个分区,一个叫做ESP分区(EFI SYSTEM PARTITION),用于存放启动文件,另一个则是BIOS下正常的系统分区,不同的是,B ...

随机推荐

  1. IOS开发学习笔记007-数据结构

    目录: 1.全局变量和局部变量 2.结构体 3.结构体数组 4.结构体做函数参数 5.结构体指针 6.枚举 7.总结 一.全局变量和局部变量 全局变量和局部变量的区别 1. 全局变量,再函数外定义的变 ...

  2. MFC深入浅出读书笔记第二部分1

    第六章 MFC程序的生死因果 MFC学习过程,这个方法不错,条例清晰. 1.CWinApp  -- 取代WinMain地位 WinMain函数的功能由CWinApp的三个函数实现 virtual BO ...

  3. Python+Selenium练习篇之6-利用class name定位元素

    有时候,我们在用firepath(不会的请点这里)查看元素的XPath信息,发现没有可以用来定位的id信息,这个时候我们就需要考虑用其他的可用的来定位元素.本文介绍如何通过元素节点中class nam ...

  4. [oldboy-django][深入 rest framework] restframewok 教程: 分页功能

    http://www.django-rest-framework.org/api-guide/pagination/ https://stackoverflow.com/questions/31785 ...

  5. wcf获取最新版本之后自己的东西没了

    大概意思,点击显示所有文件,然后在那些文件上右击 包括在项目中就行了 图呢.......我当时添加进来的图呢

  6. LAMP第三部分php配置和mysql配置

    9. 配置防盗链http://www.lishiming.net/thread-71-1-1.html 防止别人的网站,放你网站图片的链接, 位置一般情况下在 /usr/local/apache/co ...

  7. idea下的hibernate反向生成插件

    阅读目录 1. 打开 DataBase 窗口,添加数据源 2. 添加 hibernate 持久层支持,生成实体 Bean /配置文件 谈起 Hibernate 应该得知道 Gavin King 大叔, ...

  8. Linux常用命令与基本概念

    复制 文件的复制 cp 源文件 目标文件 文件夹的复制 cp -r 源文件夹 目标文件夹 删除 删除文件 rm 文件名 删除文件夹 rm -rf 文件夹 查看文件类型 file 文件名 压缩与解压 z ...

  9. POJ 3255:Roadblocks(次短路)

    题目大意:求无向图的次短路. 分析: 在起点终点各求一次最短路,枚举边,通过该边的最短路为其权值加上到起点和终点最短路之和,找到最短但又比最短路长的路径. 代码: program block; typ ...

  10. "二进制" 转化为 "十六进制

    //"二进制" 转化为 "十六进制" void To_string(uint8 *dest,char * src,uint8 length) { uint8 * ...