再谈分布式场景下的一致性

1. 介绍

之前也写过一些文章总结分布式场景下的一致性处理:

最终一致性的保证策略

分布式事务的典型处理方式:2PC、TCC、异步确保和最大努力型

事务与分布式事务原理与实现2(笔记)

从分布式数据复制一致性问题到paxos算法的理解(第一部分)

从分布式数据复制一致性问题到paxos算法的理解(第二部分)

今天群里小伙伴,拿着paxos的论文来文一致性问题,正好我也借机复习了下。本文将以比较简单的语言总结下分布式场景下如何处理一致性。本文不介绍具体的实现细节,侧重在实用的解决方案上。

2. 分布式一致性的三种需求场景

分布式对一致性有需求的场景可以归纳为......

zookeeper有哪些坑?

1. 介绍

不得不说ZK的出现是解决分布式一致性问题的一道曙光。但是事务都是发展的,即使是ZK也不是十全十美的。

今天和小伙伴聊了点ZK的问题。一些ZK使用攻略也希望在此跟大家分享下。

2. ZK的缺点

读写性能不佳(这个还需要再验证,我也只是听说):ZK的读写性能测试可以参考ZooKeeper service latencies under various loads & configurations

不适合主数据存储:zk的quorum选举适用在共享集群配置而不是主数据存储。因为其吞吐量低,容忍故障所需要的冗余副本比较多

只容忍(N-1)/2的故障

ZK......

跨语言通信方案比较——thrift、protobuf和avro

1. 介绍

常用的跨语言通信方案:

基于SOAP消息格式的WebService

基于JSON消息格式的RESTful 服务

以上两种方案的弊端:

XML体积太大,解析性能极差

JSON体积相对较小,解析相对较快,但表达能力较弱

现在比较流行的跨语言通信方案:

Google protobuf

Apache Thrift

Apache Avro

2. thrift

是由 Facebook 主导开发的一个跨平台、支持多语言的,通过定义 IDL 文件,自动生成 RPC 客户端与服务端通信代码的工具,以构建在 C++, Java, Pytho......