自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

cadem的专栏

cadem的专栏

  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 GFS的分布式哲学:HDFS的一致性成就,归功于我的失败……

截取了本人新书《分布式系统与一致性》中的一章,发在dbaplus上,转回到自己的博客。这一章,自认为是非常精彩的一章。很多分布式系统在一致性方面都不是一蹴而就的,即便它非常成功。新书链接https://item.jd.com/12856377.htmlGFS(Google File System)是Google公司开发的一种分布式文件系统。虽然GFS在Google公司内部被广泛使用,但是在相当长的一段时间里它并不为人所知。2003年,Google发表一篇论文[1]详细描述了GFS,人们才开始了.

2021-07-05 10:52:40 719

原创 本人新书上市 《分布式系统与一致性》

好长时间没有写文章了,主要是在写一本书,书名《分布式系统与一致性》。之前写过一些分布式技术和分布式一致性的文章,但是没有系统性,所以萌生了写一本书系统讲解一下这个领域。本书通过GFS、HDFS、Google BigTable、MongoDB、RabbitMQ、Zookeeper、Google Spanner、CockroachDB这些实际的分布式系统,讲述Paxos、Raft、Zab这些分布式算法,并且基于这些实例和算法讲述分布式一致性。列举一下本书的目录,公大家参考,希望本书对大家有益。1部分 开 篇

2021-06-07 11:36:26 398 1

原创 拆解Redis Cluster,怎么实现“写安全”这个重要特性?

本文发在DBAplus公众号,https://mp.weixin.qq.com/s/Uyw7MjqMW9DR6EInFIo9Wg,在自己的博客在发一边。Redis是非常流行的缓存。在Redis升级到3.0版本后,升级到 集群 版本,被称之为 Redis cluster。在集群版本中,会将数据分成多份,被保存到多个server中,从而保证集群的水平扩展能力,加之每份数据保存多个副本,从而保证可用性。并且集群版本保证一定程度的Write Safety,本文详细介绍redis cluster的实现细节,从而分析

2020-09-02 19:32:28 318

原创 SACC大会

即将在SACC上做分享演讲。凭图片中本人的个人优惠码购票,可以有优惠!

2019-10-14 15:48:34 216

原创 从 GFS 失败的架构设计来看一致性的重要性

(本文最初发于https://mp.weixin.qq.com/s/GuJ6VqZJy3ONaVOWvQT9kg,现转回到自己的博客。)GFS(Google File System)是Google公司开发的一款分布式文件系统。在2003年,Google发表一篇论文详细描述了GFS的架构。GFS,MapReduce,Bigtable并称为Google的三架马车,推动了Google的高速发展。其他互...

2019-10-14 13:32:57 1155

原创 NoSQL 数据库不应该放弃 Consistency

本文发于infoq,https://www.infoq.cn/article/rhzs0KI2G*Y2r9PMdeNv 。转回自己的博客。谈到 NoSQL,一定会提及一致性(Consistency),按照 CAP 定理,有些 NoSQL 数据库放弃了一致性,但是 NoSQL 放弃是必然的选择吗?从 1970’s,关系型数据库(RDB,Relational Database)被发明以来,关系型数...

2019-06-11 14:03:51 287

原创 如何理解Zookeeper的顺序一致性

2017饿了么做异地多活,我的团队承担Zookeeper的异地多活改造。在此期间我听到2种不同的关于一致性的说法。一种说法是Zookeeper是最终一致性,因为由于多副本、以及保证大多数成功的Zab协议,当一个客户端进程写入一个新值,另外一个客户端进程不能保证马上就能读到这个值,但是能保证最终能读取到这个值。另外一种说法是Zookeeper的Zab协议类似于Paxos协议,并且提供了强一致性。每当...

2018-05-18 08:47:19 7476 25

原创 虽然Cassandra不是CP但Cassandra是安全的

之前的一篇文章(<线性一致性(Linearizability)是并发控制的基础>),讨论过具有线性一致性的系统可以很好的控制并发访问。在另外一篇文章里(< Tunable Consistency不能让Cassandra成为CP系统>),已经讨论过,Cassandra不是一个CP系统。所以Cassandra会出现丢失更新的情况(lost write)的情况。那么Cas...

2018-04-13 18:50:04 583

原创 从Paxos不违反CAP来解释什么是CAP定理

CAP定理是分布式领域当中非常著名的定理,也是大家津津乐道的一个分布式定理。有些人这么理解CAP定理: 在分布式系统中, - C代表一致性 - A代表可用性, - P代表网络分区。 因为,分布式环境中,P不不可避免的,分布式系统要么选择一致性放弃可用性,要么选择可用性放弃一致性。另外,很多人也这样一个认识: Paxos协议(包括与之类似的Zab协议-zookeeper,Raf...

2018-04-13 18:29:31 1885 1

原创 线性一致性(Linearizability)是并发控制的基础

在我的其他几篇文章里,已经多次提到线性一致性(Linearizability),那么到底线性一致性(Linearizability)是什么?线性一致性(Linearizability)有什么用处?虽然,我们最常提到Linearizability是在讨论分布式系统的时候,但其实Linearizability是一个并发编程(concurrent programming)领域的概念。线性一致性又...

2018-04-13 17:52:41 5100 2

原创 Tunable Consistency不能让Cassandra成为CP系统

Cassandra有一个非常重要的特性,叫做Tunable Consistency。当RW>N时保证副本保持strong consistency,当RW=< N时系统的所有副本保持最终一致性。(关于这个特性可以参看< Cassandra的副本策略>这个文章)在Cassandra的文档中,有这样的一段话:You can tune Cassandra’s consist...

2018-04-13 17:23:23 731

原创 Cassandra的副本策略

我们知道Cassandra会将数据写多个副本。但是Cassndra如何将数据写入多个副本的那?这就是Cassandra的副本策略。Cassandra有一个特性叫做Tunable Consistency,用来控制副本策略。我们可以为每个读写操作设置consistency level,也可以设置全局的consistency level。Consistencly Level分为write con...

2018-04-13 16:56:10 2132

原创 Kafka的副本复制策略

Kafka会把topic partitions的数据复制到一组server上,当一个Server宕机时可以做自动的故障恢复(automatic failover)。实际是把日志复制到一组机器上,一种基于日志的复制状态机(这里就不讨论这个)。Kafka的每个topic portition的都会有一个leader,并且有0~n个follower。每个follower都会像一个普通的consumer...

2018-03-09 19:15:51 2734

原创 Paxos分析之一—Paxos是什么

对Paxos协议进行分析,解析Paxos是什么

2017-08-10 21:34:17 1172

原创 KV存储的对比

最近对各种KV存储进行一个比较,从存储引擎到存储引擎的类型,到单机版的kvstore,再到分布式kvstore集群。存储引擎的类型 类型 全称 btree LSH Log-Structured Hash Table LSM Log-Structured Merge Tree FractalTree 分型树存储引擎 类型 名称 语言 备注

2017-05-19 09:20:13 4748

原创 消息队列的exclusive consumer功能是如何保证消息有序和防止脑裂的

一般来说,消息队列都会保证queue当中的消息的顺序。然而如果有多个consumer同时消费同一个queue,那么这时就不能保证的消息的顺序性。有时候,消息的顺序是非常重要的,为了能顺序的消费消息,我们只能启动一个consumer来消费这个queue。

2017-04-13 14:03:59 2799

原创 RabbitMQ的transaction、confirm、ack三个概念的解释

在使用RabbitMQ的过程中,肯定会遇到这样的几个概念:transaction、confirm、ack。本文介绍一下这几个概念,以及他们之间的关系。

2017-04-07 19:33:57 9551

原创 RabbitMQ主备复制是异步还是同步?

我们知道RabbitMQ可以配置成Queue做主从复制(按照官方的说法叫配置mirror queue),对master queue的写操作会被复制到其他slave上去(也就是复制到mirror queue上去)。这对rabbitmq的这个特性,有些人会问这样的问题,rabbitmq的主从复制是同步的还是异步的?为什么有些人会问这个问题那?

2017-04-01 21:04:44 8248

原创 Zookeeper,etcd,consul内部机制和分布式锁和选主实现的比较

我的另外3篇文章分别介绍了Zookeeper,etcd,consul是如何实现分布式锁和选主的。本文想比较一下Zookeeper、etcd、consul内部机制有哪些不同,他们实现锁和选主的方式相同和不同。

2017-02-23 13:35:21 5612

原创 用Etcd实现分布式锁和选主

Etcd的v3版本官方client里有一个concurrency的包,里面实现了分布式锁和选主。本文分析一下它是如何实现的。

2017-02-22 20:13:19 17722

原创 用Consul实现选主

Consul实现leader election的过程是这样的过程(这个过程主要翻译自[Consul的文档](https://www.consul.io/docs/guides/leader-election.html))

2017-02-21 17:22:48 4697 2

原创 Zookeeper实现分布式锁和选主

Zookeeper可以用来实现Distributed lock(分布式锁)和leader election(选主)。分布式锁和选主虽然用在不同的场景,但是2者的机制是相同的。

2017-02-21 17:17:02 3115 1

原创 ActiveMQ的持久化与集群

ActiveMQ存储消息可以采用多种持久化方案,每种方案都有自己特有的集群方案。

2016-12-01 20:41:00 1559

原创 RabbitMQ可用性和可靠性分析

本文分析一下RabbitMQ的可用性和可靠性。首先,介绍一下RabbitMQ的一些概念。然后分析RabbitMQ如何在可用性和可靠性之间做出平衡

2016-12-01 16:15:17 4740 1

原创 Zookeeper之reliable

最近在负责zookeeper的跨机房同步方案,所以又把zookeeper深入研究了一下,总结一些结果在这里。至于zookeeper的跨机房同步方案先不在这里说,打算另外单写。这里我主要想说一个问题,zookeeper是什么?zookeeper的网站上是这要描述zookeeper的:Apache ZooKeeper is an effort to develop and maintain an ope

2016-08-17 14:02:29 419

原创 并发相关的Java library

按功能上划分 Concurrency(from the book of core java)Synchronization Object内部lock, synchronizedkeyword (apply to method or code block) Lock object ReentrantLock condition object Lock objec

2016-02-28 09:59:42 1419

原创 IO Model

IO model, epoll, IO completion port

2016-02-01 18:22:53 553

原创 并发处理中的问题以及解决这些问题的并发模型

单机并发是集群并发的基础。本文主要将单机并发问题,和解决单机并发问题解决模型。

2016-02-01 17:18:22 3011

原创 Java协程

1.Java continuation1.1. Javaflowhttp://commons.apache.org/sandbox/commons-javaflow/1.2. Continuations http://hg.l33tlabs.org/Continuations/ Lightweight Java Continuations Library2.Java coroutine2

2015-09-23 14:16:33 723

原创 Java并发

1.要解决的问题参看http://blog.csdn.net/cadem/article/details/483757352.多线程与线程同步参看http://blog.csdn.net/cadem/article/details/483766213.NIO4.Netty5.Mina6.Java continuation7.Java coroutine8.Jetty9.RIFERIFE is a f

2015-09-23 14:07:09 322

原创 c/c++ coroutine

1.实现机制1.1. switch-case Protothread 最轻,但受限最大1.2. setjmp/longjmp StateThread采用这种方式1.3. ucontext1.4. boost::context针对不同的arch用汇编实现的http://www.boost.org/doc/libs/1_59_0/libs/context/doc/html/

2015-09-22 14:13:19 1486

原创 C++高并发

1. 要解决的问题参看http://blog.csdn.net/cadem/article/details/483757352. 线程间同步http://concurrencykit.org/ Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures3.

2015-09-22 13:24:47 5433 2

原创 Java Executor的类关系

按功能上划分Concurrency(from the book of core java)SynchronizationObject内部lock, synchronized keyword (apply to method or code block)Lock object, condition object, read/write locksMonitor con

2015-09-11 19:15:22 409

原创 协程

coroutineTranslation: routine例程 coroutine协程 subroutine子例程Concept: allowing multiple entry points for suspending and resuming execution at certain locationsNaming from: coroutine (cooperative rout

2015-09-11 18:22:40 1113

原创 存储系统的分类

之前收集了一些存储产品,最近又重新整理了一下,对他们进行了简单的分类。每个对存储的分类可能不仅相同,我的分类完全按照自己的喜好来分,如和您的分类不同,仅供参考。只是做了搜集和分类,少量产品加了写介绍,希望以后有时间,加更多更详细的介绍。

2015-09-11 17:56:11 4112

Akka Essentials

A practical, step-by-step guide to learn and build Akka's actor-based, distributed, concurrent, and scalable Java applications

2016-01-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除