
分布式
光与热
这个作者很懒,什么都没留下…
展开
-
ZooKeeper ZAB协议简述
Zookeeper主要依赖ZAB(ZooKeeper Atomic Broadcast)协议实现分布式数据的一致性,基于该协议,ZooKeeper实现了一种主备模式的系统架构来保持集群中各副本之间的数据一致性。具体的说: 1. ZooKeeper使用一个单一的主进程(单进程更好处理客户端并发)来接收并处理客户端的事务请求,并采用ZAB原 子广播协议将服务器数据的状态变更以事务Proposal形原创 2017-11-30 19:39:11 · 1341 阅读 · 0 评论 -
负载均衡之轮询策略
轮询算法是最简单的一种负载均衡算法,它的原理是将用户的请求轮流分配给内部的服务器,并且轮询算法并不需要记录当前所有连接的状态,所以它是一种无状态的调度.简单轮询策略下面是简单轮询算法的实现public class RouteRound implements LoadBalance { private int count = 0; @Override p...原创 2018-03-19 21:26:14 · 5958 阅读 · 0 评论 -
分布式锁之Redis缓存锁
1.Redis分布式锁用Redis来实现分布式锁最简单的方式是在实例里创建一个键值,创建出来的键值有一个超时时间,所以每个锁最终会被释放,当一个客户端想要释放锁时候,客户端只要删除这个键值就可以。利用redis脚本编写申请和释放锁代码比利用WATCH/MULTI/EXEC编写的代码更加简洁,减少了业务服务器客户服务器之间的交互,在高并发情况下redis脚本编写代码比WATCH/MULTI/EXEC性原创 2017-11-26 15:17:34 · 4599 阅读 · 0 评论 -
分布式锁之数据库锁
在分布式环境下经常会出现这样的需求,多个服务器节点调用远程服务器的某项资源,但是这样的资源在同一时间点只允许一个服务器节点使用,类似于这样机器与机器之间的并发无法通过传统java并发API来解决.于是便有了分布式锁数据库锁是并发锁的一种实现分布式锁需要满足以下几个条件在分布式环境下,在同一时间只能被一台机器的一个线程执行为了避免死锁,分布式锁是一把可重入锁CREATE TABLE `resou原创 2017-11-26 10:04:17 · 1004 阅读 · 0 评论 -
分布式事务一致性之三阶段提交
三阶段提交是两阶段提交的改进版本与两阶段提交不同,三阶段提交有两个改动点同时在协调者和参与者引入超时机制在第一阶段和第二阶段插入一个准备阶段,目的是保证最后提交之前参与节点的状态都是一致的三阶段提交有cancommit,precommit,docommit三个阶段CanCommit阶段事务询问阶段:协调者向参与者发送commit请求,等待参与者响应响应反馈:参与者接到CanCommit请求原创 2017-11-25 15:57:31 · 677 阅读 · 0 评论 -
分布式事务一致性之两阶段提交
1.分布式事务分布式事务是指会涉及到操作多个数据库的事务。其实就是将对同一库事务的概念扩大到了对多个库的事务。目的是为了保证分布式系统中的数据一致性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚) 但是在分布式系统中,各个节点之间相互独立,通过网络进行进行沟通和协调,由于存在事务机制,可以保证每个独立节点的数据原创 2017-11-25 15:24:00 · 546 阅读 · 0 评论 -
安装单节点的zookeeper
解压zookeeper文件将下载到的zookeeper-3.4.6.tar.gz安装文件上传到服务器的/home目录,解压后进入根目录创建data文件夹和logs文件夹cd /hometar -zxvf zookeeper-3.4.6.tar.gzcd zookeeper-3.4.6mkdir datamkdir logs配置zoo.cfg进入conf目录,将zoo_sample.cfg重命转载 2017-11-22 14:53:18 · 1033 阅读 · 0 评论 -
zookeeper运用场景
场景一有一组服务器向客户端提供某种服务(例如:我前面做的分布式网站的服务端,就是由四台服务器组成的集群,向前端集群提供服务),我们希望客户端每次请求服务端都可以找到服务端集群中某一台服务器,这样服务端就可以向客户端提供客户端所需的服务。对于这种场景,我们的程序中一定有一份这组服务器的列表,每次客户端请求时候,都是从这份列表里读取这份服务器列表。那么这分列表显然不能存储在一台单节点的服务器上,否则这个转载 2017-11-22 14:46:40 · 315 阅读 · 0 评论 -
负载均衡之一致性哈希算法
说到负载均衡的hash算法,自然会联想起如下这样的算法hash(object)%nodeTotal而在集群中,机器的动态上下线是常见的情况,如果集群是无状态的,那么上述的算法没有问题.但是如果是缓存之类的集群,节点的动态上下线会导致几乎所有的key的重新映射,这样造成的影响是数据错乱,相同备份的数据同时存在于集群中的多个节点,造成内存空间的浪费为了解决上述的问题,一致性哈希算法就被...原创 2018-03-21 21:12:05 · 4681 阅读 · 1 评论