一 简介

Apache Curator是一个比较完善的ZooKeeper客户端框架,通过封装的一套高级API 简化了ZooKeeper的操作。通过查看官方文档,可以发现Curator主要解决了三类问题:

封装ZooKeeper client与ZooKeeper server之间的连接处理
提供了一套Fluent风格的操作API
提供ZooKeeper各种应用场景(recipe, 比如:分布式锁[……]

阅读全文

1、实现序列化及反序列化的目的主要是为了实现网络中数据传输,hessian可以将对象序列化为二进制数据流,降低网络带宽,实现更高效的传输。
2、使用hessian实现序列化的对象要求必须实现java.io.Serializable接口,否则运行会报错。
3、我们来看一下具体的代码实现,首先自定义一个User对象:

public class User implements Serializable[......]

阅读全文

CAS是英文单词Compare And Swap的缩写,翻译过来就是比较并替换。它使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。更新一个变量的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对应的值修改为B。可以说CAS是一种乐观锁,但它仍然存在一些缺点。如ABA问题,自旋锁消耗问题,多变量共享一致性问题

ABA问题:
问题描述:线程t1将它的值从A变[……]

阅读全文

计算机系统的软件架构是构建这个系统所需要的一组结构,包括软件元素、它们之间的关系以及两者的属性。其实质是应用程序的架构是将软件分解为元素和这些元素之间的关系。分解的重要性体现在如下2点:

  1. 它促进了劳动和知识的分工,它使具有特定专业知识的人们(团队)能够就应用程序能够高效的协同工作。
  2. 它定义了软件元素的交互方式。

应用程序有2个层面的需求,第一类是功能性需求,它可以通过任意性架构实现,甚至是[……]

阅读全文

今天在docker容器中使用centos7官方镜像启动了一个容器,在安装ssh服务后,想使用systemctl启动服务,结果报下列错误:

[root@eb58e337fdc7 /]# systemctl
Failed to get D-Bus connection: Operation not permitted

百度搜了一下,网上有的文章说加一个--privileged参数即可解决,于是重[……]

阅读全文

协议概述

 两阶段提交协议(two phase commit protocol,2PC)可以保证数据的强一致性,许多分布式关系型数据管理系统采用此协议来完成分布式事务。它是协调所有分布式原子事务参与者,并决定提交或取消(回滚)的分布式算法。同时也是解决一致性问题的一致性算法。该算法能够解决很多的临时性系统故障(包括进程、网络节点、通信等故障),被广泛地使用。但是,它并不能够通过配置来解决所有的故[……]

阅读全文

Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。

Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不[……]

阅读全文