分布式
hellozhxy
这个作者很懒,什么都没留下…
展开
-
如何解决微服务的数据一致性分发问题
介绍系统架构微服务化以后,根据微服务独立数据源的思想,每个微服务一般具有各自独立的数据源,但是不同微服务之间难免需要通过数据分发来共享一些数据,这个就是微服务的数据分发问题。Netflix/Airbnb等一线互联网公司的实践[参考附录1/2/3]表明,数据一致性分发能力,是构建松散耦合、可扩展和高性能的微服务架构的基础。本文解释分布式微服务中的数据一致性分发问题,应用场景,并给出常见的解决方法。本文主要面向互联网分布式系统架构师和研发经理。为啥要分发数据?场景?我们还是要从具体业务场景出转载 2020-09-02 20:09:35 · 1422 阅读 · 0 评论 -
分布式一致性算法-Paxos、Raft、ZAB、Gossip
为什么需要一致性数据不能存在单个节点(主机)上,否则可能出现单点故障。 多个节点(主机)需要保证具有相同的数据。 一致性算法就是为了解决上面两个问题。一致性算法的定义一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。一致性的分类强一致性 说明:保证系统改变提交以后立即改变集群的状态。 模型: Paxos Raft(muti-paxos) ZAB(muti-paxos) 弱一致性 说明:也叫最终一致性,系统不保证改变提交以后转载 2020-05-27 14:44:34 · 2160 阅读 · 1 评论 -
ZooKeeper总结
什么是ZooKeeper?ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。 ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 Zookeeper 保证了如下分布式一致性特性: (1)顺序一致性 (2)原子性 (3)单一视图 (4)可靠原创 2020-05-09 14:09:35 · 505 阅读 · 0 评论 -
蚂蚁金服大规模分布式事务实践和开源历程
本文整理自蚂蚁金服技术专家、分布式事务 Seata 发起者之一张森(花名:绍辉)在 GIAC 全球互联网架构大会的分享。10几年的经验,今天全部公开和开源。一、自研分布式事务解决数据一致性问题1.1 分布式事务问题产生原因1.1.1 数据库的水平拆分蚂蚁金服的业务数据库起初是单库单表,但随着业务数据规模的快速发展,数据量越来越大,单库单表逐渐成为瓶颈。所以我们对数据库进行了水平...转载 2020-04-21 10:46:03 · 308 阅读 · 0 评论 -
分布式理论(七):一致性协议之 ZAB
前言在前面的文章中,我们说了很多一致性协议,比如 Paxos,Raft,2PC,3PC等等,今天我们再讲一种协议,ZAB 协议,该协议应该是所有一致性协议中生产环境中应用最多的了。为什么呢?因为他是为 Zookeeper 设计的分布式一致性协议!1. 什么是 ZAB 协议? ZAB 协议介绍 ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper ...转载 2019-12-25 20:48:52 · 134 阅读 · 0 评论 -
CRDT——解决最终一致问题的利器
概述跨数据中心的数据同步是企业提升容灾能力的必备手段,对于社交、视频直播、电商以及游戏等访问规模大、业务分布广的行业,跨区域全球部署也愈发重要。然而面对大型分布式系统, 不免要讨论CAP理论,在跨区域多活的场景下如何取舍?显然P(网络分区)是首要考虑因素。其次,跨区域部署就是为了提高可用性,而且对于常见的一致性协议,不管是2PC、Paxos还是raft,在此场景下都要做跨区域同步更新,不仅会...转载 2019-12-13 14:52:15 · 10771 阅读 · 0 评论 -
分布式系统中的一致性协议
本文详细介绍目前分布式系统中常见的一些一致性协议:两阶段提交协议,三阶段提交协议,向量时钟,RWN协议,paxos协议,Raft协议。下面就一个个详细讲解下。一. 两阶段提交协议(2PC)两阶段提交协议,简称2PC,是比较常用的解决分布式事务问题的方式,要么所有参与进程都提交事务,要么都取消事务,即实现ACID中的原子性(A)的常用手段。两阶段提交将提交过程划分为连续的两个阶段:表决阶段(...原创 2019-12-03 20:50:37 · 634 阅读 · 0 评论 -
2PC到3PC到Paxos到Raft到ISR
序本文主要讲述2PC及3PC,以及Paxos以及Raft协议。两类一致性(操作原子性与副本一致性) 2PC协议用于保证属于多个数据分片上的操作的原子性。这些数据分片可能分布在不同的服务器上,2PC协议保证多台服务器上的操作要么全部成功,要么全部失败。 Paxos协议用于保证同一个数据分片的多个副本之间的数据一致性。当这些副本分布到不同的数据中心时,这个需求尤其强烈。 一...转载 2019-12-03 20:26:55 · 154 阅读 · 0 评论 -
向量时钟Vector Clock in Riak
Riak是以 Erlang 编写的一个高度可扩展的分布式数据存储,Riak的实现是基于Amazon的Dynamo论文,Riak的设计目标之一就是高可用。Riak支持多节点构建的系统,每次读写请求不需要集群内所有节点参与也能胜任。像这样的系统,我们需要版本机制来确定哪个值是最新的。所以就引入了向量时钟(Vector Clock)当存储一个对象到Riak时,都被打上向量时钟标签。通过向...转载 2019-11-25 17:06:35 · 385 阅读 · 0 评论 -
详解三种主流分布式事务方案的优劣
一、分布式事务前奏事务:事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。本地事务:当事务由资源管理器本地管理时被称作本地事务。本地事务的优点就是支持严格的ACID特性,高效,可靠,状态可以只在资源管理器中维护,而且应用编程模型简单。但是本地事务不具备分布式事务的处理能力,隔离的最小单位受限于资源管理器。全局事务:当...转载 2019-11-22 14:22:41 · 785 阅读 · 0 评论 -
蚂蚁金服大规模分布式事务实践及四种分布式事务模式
蚂蚁金服大规模分布式事务实践及四种分布式事务模式作者:绍辉| 2019-07-30 13:55 收藏:1本文整理自蚂蚁金服技术专家、分布式事务 Seata 发起者之一张森(花名:绍辉)在 GIAC 全球互联网架构大会的分享。本文详细讲解了在分布式架构演进中,蚂蚁金服面对的跨服务、跨数据库的业务数据一致性问题以及应对措施,并分享了分布式事务 Seata 的 AT、TC...转载 2019-08-23 14:55:54 · 408 阅读 · 0 评论 -
分布式系统理论之Quorum机制
一,Quorum机制介绍在分布式系统中有个CAP理论,对于P(分区容忍性)而言,是实际存在 从而无法避免的。因为,分布系统中的处理不是在本机,而是网络中的许多机器相互通信,故网络分区、网络通信故障问题无法避免。因此,只能尽量地在C 和 A 之间寻求平衡。对于数据存储而言,为了提高可用性(Availability),采用了副本备份,比如对于HDFS,默认每块数据存三份。某数据块所在的机器宕机了,...转载 2019-06-20 21:02:49 · 205 阅读 · 0 评论 -
分布式系统理论之租约机制学习
一,租约机制介绍在分布式系统中,往往会有一个中心服务器节点。该节点负责存储、维护系统中的元数据。如果系统中的各种操作都依赖于中心服务器上的元数据,那么中心服务器很容易成为性能瓶颈及存在单点故障。而通过租约机制,可以将中心服务器的“权力”下放给其他机器,就可以减轻中心服务器的压力。当然,租约机制还有许多其他的用途:比如,确定集群中结点的状态,还可以实现分布式下的读写锁……如下图,GFS ma...转载 2019-06-20 20:53:20 · 1286 阅读 · 0 评论 -
分布式系统理论之两阶段提交协议
一,两阶段提交协议介绍两阶段提交协议是用来保证分布式系统事务的协议。在分布式系统中,一个事务需要由多台机器协调完成,机器之间通过网络来通信,如何保证一组操作在多台机器上要么都做,要么都不做呢?(事务的ACID特性)【比如,一个事务包括三个操作A,B,C,操作A,B,C分别 在机器1,2,3上完成,如果机器1成功提交了操作A,机器2成功提交了操作B,但是机器3执行操作C失败了,则需要撤消所有...转载 2019-06-20 19:46:32 · 4512 阅读 · 0 评论 -
分布式理论(七): 一致性协议之 ZAB
前言在前面的文章中,我们说了很多一致性协议,比如 Paxos,Raft,2PC,3PC等等,今天我们再讲一种协议,ZAB 协议,该协议应该是所有一致性协议中生产环境中应用最多的了。为什么呢?因为他是为 Zookeeper 设计的分布式一致性协议!1. 什么是 ZAB 协议? ZAB 协议介绍 ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper ...转载 2019-04-01 15:21:24 · 143 阅读 · 0 评论 -
简述分布式一致性协议(2pc、3pc、paxos、zab)
分布式一致性协议二阶段提交协议(2pc) 三阶段提交协议(3pc) paxos zab在分布式系统中,每个机器都可以确定自己进行的事务操作是否成功,但是无法直接了解其他机器的操作结果。因此,当一个分布式事务操作需要保持ACID 特性时,就需要一个“协调者”节点调度其他“参与者”节点来进行分布式事务操作。二阶段提交(2pc)提交事务请求 -> 执行事务提交;缺点:同步阻塞(...转载 2019-03-28 14:46:30 · 425 阅读 · 0 评论 -
分布式中的 transaction log
分布式中的 transaction log在分布式系统中,有很多台node组成一个cluster,对于client 的一个写操作请求而言,在什么样的情况下,cluster告诉client此次写操作请求是成功的呢?首先来定义一下什么是写操作成功?假设有一个三节点的cluster,一个primary node,两个replica node如下图所示:方案1. client 向prima...转载 2019-04-15 19:05:29 · 286 阅读 · 0 评论 -
为什么要将服务或者数据部署多份?
1. 分布数据的理由单机无法承受负载,请写请求太大,一台机处理不过来,为了可扩展性 避免单点故障,一台机挂了,整个服务就挂了。为了容错和高可用 降低服务的延迟,用户分布在各个地区,服务器部署在各个机房,将服务部署到离用户近的地方2. 垂直扩容方案一台机器内存不够了,那就加内存;CPU不够了,那就加CPU。 在一台机器上,内存加一倍、CPU加一倍,但是硬件配置所需要花的钱,却是...转载 2019-04-16 14:42:07 · 406 阅读 · 0 评论 -
分布式哈希算法
一,普通的Hash方式在介绍分布式哈希算法之前,先了解下普通的Hash是如何实现的。JDK中的java.util.HashMap类就实现了一个哈希表,它的特点有:①创建哈希表(HashMap)需要先指定大小,即默认创建一个能够存储多少个元素的哈希表,它的默认大小为16。②当不断地向HashMap中添加元素时,HashMap越来越满,当添加的元素达到了装载因子乘以表长时,就需要扩容了。扩容时...转载 2019-04-16 16:38:29 · 930 阅读 · 0 评论 -
一致性哈希算法学习及JAVA代码实现分析
1,对于待存储的海量数据,如何将它们分配到各个机器中去?---数据分片与路由当数据量很大时,通过改善单机硬件资源的纵向扩充方式来存储数据变得越来越不适用,而通过增加机器数目来获得水平横向扩展的方式则越来越流行。因此,就有个问题,如何将这些海量的数据分配到各个机器中?数据分布到各个机器存储之后,又如何进行查找?这里主要记录一致性Hash算法如何将数据分配到各个机器中去。2,衡量一致性哈...转载 2019-04-16 17:11:56 · 160 阅读 · 0 评论 -
Lamport Logical Clock 学习
1,导论①如何在分布式环境下定义系统中所有事件的发生顺序?②分布式环境下多个进程竞争资源时如何互斥?③什么是偏序,偏序的作用是什么,有什么不足?④什么是全序,全序的作用是什么,有什么不足?⑤为什么需要物理时钟,物理时钟如何同步?下面来进行介绍。2,偏序的定义、发生在先(happened before)关系考虑单一的进程A,在某时刻发生了事件E1,经过一段时间后,发生事件E2,可以...转载 2019-04-22 13:51:15 · 238 阅读 · 0 评论 -
分布式事务
http://www.cnblogs.com/LBSer/p/4715395.html 前阵子从支付宝转账1万块钱到余额宝,这是日常生活的一件普通小事,但作为互联网研发人员的职业病,我就思考支付宝扣除1万之后,如果系统挂掉怎么办,这时余额宝账户并没有增加1万,数据就会出现不一致状况了。 上述场景在各个类型的系统中都能找到相似影子,比如在电商系统中,当有用户下单后,除了在订单表插入一条记...转载 2019-06-18 20:46:13 · 205 阅读 · 0 评论 -
分布式事务之TCC
来源:云栖社区 |作者:绍辉 | 原文地址见文末一、TCC简介TCC是一种比较成熟的分布式事务解决方案,可用于解决跨库操作的数据一致性问题;TCC是服务化的两阶段编程模型,其Try、Confirm、Cancel 3个方法均由业务编码实现;其中Try操作作为一阶段,负责资源的检查和预留,Confirm操作作为二阶段提交操作,执行真正的业务,Cancel是预留资源的取消;...转载 2019-06-19 20:07:40 · 13732 阅读 · 0 评论 -
分布式事务之TCC事务
TCC 事务介绍在08年的软件开发2.0技术大会上,支付宝程立在PPT大规模SOA系统中的分布事务处理,提出TCC概念。 在网络上搜索分布式事务相关的博客,基本都会提及这个PPT,目前很多分布式事务开源项目也都是基于TCC的思想实现。TCC 将事务提交分为 Try - Confirm - Cancel 3个操作。Try:预留业务资源/数据效验 Confirm:确认执行业务操作 Ca...转载 2019-06-19 20:16:03 · 777 阅读 · 0 评论 -
分布式系统概念:一致性协议、一致性模型、拜占庭问题、租约、副本协议
1,一致性协议两阶段提交协议与Raft协议、Paxos协议①两阶段提交协议在分布式系统中,每个节点虽然可以知晓自己的操作时成功或者失败,却无法知道其他节点的操作的成功或失败。当一个事务跨越多个节点时,为了保持事务的ACID特性,需要引入一个作为协调者的组件来统一掌控所有节点(称作参与者)的操作结果并最终指示这些节点是否要把操作结果进行真正的提交(比如将更新后的数据写入磁盘等等)。因此,...转载 2019-04-04 13:46:55 · 411 阅读 · 0 评论