
分布式
欧拉兔
vfrvwr
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
利用Zookeeper(Curator)实现 - Master选举
Zookeeper 是一个高可用的分布式数据管理与协调框架,基于ZAB协议算法的实现,该框架能够很好的保证分布式环境中数据的一致性。Zookeeper的典型应用场景主要有:数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等。 本文主要介绍如何利用Zookeeper实现Master选举。1.Master选举...原创 2019-06-12 19:23:44 · 554 阅读 · 0 评论 -
利用Zookeeper实现 - 实现分布式锁
Curator提供了zk场景的绝大部分实现,使用Curator就不必关心其内部算法,Curator提供了来实现分布式锁,用方法获取锁,以及用方法释放锁,同其他锁一样,方法需要放在finakky代码块中,确保锁能正确释放。1.添加Maven依赖<dependency> <groupId>org.apache.curator</group...原创 2019-06-12 01:02:25 · 205 阅读 · 0 评论 -
分布式锁的几种实现方式
1.前言 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者做出取舍。在互...原创 2019-06-11 15:38:23 · 237 阅读 · 0 评论 -
利用Zookeeper(Curator)实现 - Barrier屏障
1.什么是BarrierBarrier是一个同步点,每一个进程到达此点都要等待,直到某一个条件满足,然后所有的节点继续进行。比如:赛跑大家都知道,所有比赛人员都会在起跑线外等待,直到教练员的枪响之后,所有参赛者立刻开始赛跑。JDK的并发包下有CyclicBarrier,它看起来和CountDownLatch有很大的相似之处:CountDownLatch:是一个同步的辅助类,允许一个或多...原创 2019-06-16 21:05:02 · 217 阅读 · 0 评论 -
利用Zookeeper(Curator)实现 - 服务注册与发现
随着业务增加,以前简单的系统已经变得越来越复杂,单纯的提升服务器性能也不是办法,而且代码也是越来越庞大,维护也变得越来越困难,这一切都催生了新的架构设计风格 – 微服务架构的出现。微服务给我们带来了很多好处,例如:独立可扩展、易维护。但是随着应用的分解,微服务的引入,服务越来越多,业务系统与服务系统之间的调用,该架构的问题暴露出来:最明显的问题是所有的请求都需要nginx来转发,随着内部服务的...原创 2019-06-16 15:23:43 · 2567 阅读 · 1 评论 -
利用Zookeeper(Curator)实现 - 消息队列
目录前言1.DistributedQueue2.DistributedIdQueue3.DistributedPriorityQueue4.DistributedDelayQueue前言Curator框架也有分布式队列实现 。 利用ZK的PERSISTENT SEQUENTIAL(持久顺序)节点,可以保证放入到队列中的项目是按照顺序排队的。并且宕机重启并不丢失消息, 如...原创 2019-06-16 02:34:38 · 1620 阅读 · 1 评论 -
利用Zookeeper(Curator)实现-分布式锁
在分布式环境中 ,为了保证数据的一致性,经常在程序的某个运行点(例如,减库存操作或者流水号生成等)需要进行同步控制。以一个"流水号生成"的场景为例,普通的后台应用通常都是使用时间戳来生成流水号,但是在用户访问量很大的情况下,可能会出现并发问题。下面通过示例程序就演示一个典型的并发问题:public static void main(String[] args) throws Except...原创 2019-06-16 01:53:20 · 469 阅读 · 0 评论 -
利用Zookeeper(Curator)实现-事件监听
事件监听Zookeeper原生就支持通过注册Watcher来进行事件监听,但是其使用并不是特别方便,需要开发人员反复注册Watcher,比较繁琐。Curator引入了Cache来实现对zookeeper服务端事件的监听,Cache是Curator中对事件的包装,其对事件的监听其实可以近似的看做是一个本地缓存视图和远程Zookeeper视图的对比过程。同时Curator能够自动为开发人员处理反复...原创 2019-06-14 00:00:07 · 1103 阅读 · 0 评论 -
利用Zookeeper实现-分布式计数器
之前我们了解了基于Corator的分布式锁之后,我们就很容易基于其实现一个分布式计数器,顾名思义,计数器是用来计数的, 利用ZooKeeper可以实现一个集群共享的计数器。 只要使用相同的path就可以得到最新的计数器值, 这是由ZooKeeper的一致性保证的。Curator有两种计数器。1.SharedCount这个类使用int类型来计数。 主要涉及三个类。SharedCount...原创 2019-06-13 02:05:48 · 1298 阅读 · 0 评论 -
分布式系统 -CAP 定理图解
CAP定理是分布系统中的一个基本定理,它指出任何分布系统最多可以具有以下三个属性中的两个。一致性 (Consistency) 可用性 (Availability) 分区容错性 (Partition tolerance)本文将以图解的形式简明地对CAP定理的规范和证明进行概括总结什么是 CAP 定理?CAP定理指出分布式系统不可能同时具有一致性、可用性和分区容错性。听起来很简...原创 2019-06-13 01:25:09 · 338 阅读 · 0 评论 -
多线程-一个线程池的简单实现
设计先行想要实现一个线程池,我们首先要来进行设计,考虑它需要有哪些功能,如何设计和安排这些功能是至关重要的。在我们所要实现的 Java 线程池需要有:任务队列:它能够添加或者删除任务,并且它还需要支持原子操作,不能同时有多个线程从中取出任务。 通知机制:如果任务队列为空,工作线程将会阻塞在获取任务这一操作上;如果这时任务队列中有了新的任务,需要通知工作线程从中获取任务来执行。 线程...原创 2019-07-07 00:32:27 · 231 阅读 · 0 评论