zookeeper
清觞煮雪
这个作者很懒,什么都没留下…
展开
-
【Zookeeper系列二】ZooKeeper典型应用场景实践
ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。网上对ZK的应用场景也有不少介绍,本文将介绍比较常用的项目例子,系统地对ZK的应用场景进行一个分门归类的介绍。 值得注意的是,ZK并非天生就是为这些应用场景设计的,都是后来众多开发者根据其框架的特性,利转载 2016-05-26 16:07:48 · 3724 阅读 · 0 评论 -
基于ZooKeeper的分布式Session实现
1 为什么使用ZooKeeper 目前有关于分布式Session的实现基本上都是基于memcached。memcached本质上是一个内存缓存系统。虽然memcached也可以是分布式集群环境的,但是对于一份数据来说,它总是存储在某一台memcached服务器上。如果发生网络故障或是服务器宕机,则存储在这台服务器上的所有数据都将不可访问。由于数据是存储在内存中的,重启服务器,将导致数据全部丢失。转载 2016-05-26 16:38:05 · 2210 阅读 · 0 评论 -
【Zookeeper源码五】Zookeeper 集群版建立连接过程
1 各服务器角色的请求处理器链 先介绍下Leader、Follower、Observer服务器的请求处理器链 1.1 Leader服务器 PrepRequestProcessor-》ProposalRequestProcessor-》CommitProcessor-》ToBeAppliedRequestProcessor-》FinalRequestProcessor ProposalR转载 2016-05-26 16:34:24 · 1926 阅读 · 0 评论 -
【Zookeeper源码四】Zookeeper 集群版服务器介绍
1 集群版服务器启动 启动类是org.apache.zookeeper.server.quorum.QuorumPeerMain,启动参数就是配置文件的地址。 1.1 配置文件说明 来看下一个简单的配置文件内容: tickTime=4000 initLimit=10 syncLimit=5 dataDir=D:\\zk-test\\datadir\\server1 client转载 2016-05-26 16:32:36 · 680 阅读 · 0 评论 -
【Zookeeper源码三】Zookeeper 单机版服务器介绍
1 单机版服务器启动方式 单机版的服务器启动,使用ZooKeeperServerMain的main函数来启动,参数分为两种: 只有一个参数:表示为一个配置文件地址;有2~4个参数:分别表示端口、dataDir、tickTime、maxClientCnxns; 详细介绍见开篇的介绍运行ZooKeeper。 接下来看下启动的整个过程: 第一步:创建一个ZooKeeperServe转载 2016-05-26 16:23:54 · 743 阅读 · 0 评论 -
【Zookeeper源码二】Zookeeper 客户端创建连接过程分析
1 客户端API简单使用 1.1 demo案例 一个最简单的demo如下: package com.king.demo; import java.io.IOException; import java.util.concurrent.CountDownLatch; import org.apache.zookeeper.WatchedEvent; import org.a转载 2016-05-26 16:19:16 · 6373 阅读 · 0 评论 -
【Zookeeper源码一】Zookeeper 源码环境搭建
1 搭建步骤 1.1 到github中下载该项目 项目地址 https://github.com/apache/zookeeper。下载.zip包到本地解压。 解压后文件目录: 1.2 使用ant对源码编译成eclipse工程 上述源码还不是eclipse工程。需要使用ant eclipse命令来转换成eclipse工程。ant就不用再说了,自行网上搜索与配置。 cd转载 2016-05-26 16:17:39 · 15676 阅读 · 1 评论 -
【Zookeeper系列六】Zookeeper 工作原理
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookee转载 2016-05-26 16:16:06 · 530 阅读 · 0 评论 -
【Zookeeper系列五】ZooKeeper 实时更新server列表
1 场景描述 在分布式应用中, 我们经常同时启动多个server, 调用方(client)选择其中之一发起请求. 分布式应用必须考虑高可用性和可扩展性: server的应用进程可能会崩溃, 或者server本身也可能会宕机. 当server不够时, 也有可能增加server的数量. 总而言之, server列表并非一成不变, 而是一直处于动态的增减中. 那么client如何才能实时的更新s转载 2016-05-26 16:14:58 · 1224 阅读 · 0 评论 -
【Zookeeper系列四】ZooKeeper 分布式锁实现
1 场景描述 在分布式应用, 往往存在多个进程提供同一服务. 这些进程有可能在相同的机器上, 也有可能分布在不同的机器上. 如果这些进程共享了一些资源, 可能就需要分布式锁来锁定对这些资源的访问。 2 思路 进程需要访问共享数据时, 就在"/locks"节点下创建一个sequence类型的子节点, 称为thisPath. 当thisPath在所有子节点中最小时, 说明该进程获得了锁.转载 2016-05-26 16:13:51 · 3876 阅读 · 1 评论 -
【Zookeeper系列三】ZooKeeper Java API使用
ZooKeeper提供了Java和C的binding. 本文关注Java相关的API. 1 准备工作 拷贝ZooKeeper安装目录下的zookeeper.x.x.x.jar文件到项目的classpath路径下. 2 创建连接和回调接口 首先需要创建ZooKeeper对象, 后续的一切操作都是基于该对象进行的. ZooKeeper(String connectString, in转载 2016-05-26 16:11:44 · 3679 阅读 · 0 评论 -
[Zookeeper系列一]Zookeeper应用介绍与安装部署
1 Zookeeper概述 ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeep转载 2016-05-26 16:00:14 · 1616 阅读 · 0 评论 -
使用 RMI + ZooKeeper 实现远程调用框架
在 Java 世界里,有一种技术可以实现“跨虚拟机”的调用,它就是 RMI(Remote Method Invocation,远程方法调用)。例如,服务A 在 JVM1 中运行,服务B 在 JVM2 中运行,服务A 与 服务B 可相互进行远程调用,就像调用本地方法一样,这就是 RMI。在分布式系统中,我们使用 RMI 技术可轻松将 服务提供者(Service Provider)与 服务消费者(S原创 2016-07-06 10:34:50 · 1033 阅读 · 0 评论