`
michael.softtech
  • 浏览: 208802 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

分布式系统的一点总结

 
阅读更多

最近公司决定做一个面向个人的应用。虽然前期可能并发不会很大但是还是研究了一下支付宝和Ebay的分布式架构,以备用。

 

首先CAP理论。

我们通常在集中式环境中遇到的事务基本都是遵循ACID原则的。也就是说数据库中的数据有着很强的一致性。

但是在一个分布式环境中由于会遇到读写分离的情况,根据著名的CAP理论,为了更大程度的保证A(availability)和P(partition tolerance),需要在一些情况下对C(consistency)有所妥协。这就是俗称的弱一致性。但是弱贵弱,终归还是要回到一致状态的,于是这个叫最终一致性(Eventually Consistent). 最终一致性的实现是存储系统需要考虑的问题。这个要考虑到Master/Slave的replication的实现方式。

 

再者就是事务的实现模型。

本地事务不用说了。为了满足分布式事务的需求,业界有一个XA协议下的2 Phase Commit事务模型。

这个模型就是保证了跨数据源的事务或者全部提交或者全部回滚。在一定程度上满足了分布式环境中事务的一致性问题,

但是因为采用的是2阶段提交的方式,效率很低。 于是有了一些解决分布式环境下事务一致性的替代方案。比较著名的一种就是Best Efforts 1  Phase Pattern. 这个方案的原理就是尽量拖延事务提交的顺序。争取在最后把跨多个数据源的多个事务(按照我们需要的顺序)同时提交或者回滚。 这个方案面临的挑战就是当事务没有全部提交系统出现Error的时候怎么办。这个情况下数据就出现了不一致的情况。 但是毕竟这种应用Crash级别的问题比较少见,而且可以在业务里做适当的判断以减少这种情况带来的影响,所以这个方案还是不错的。我看了下阿里巴巴的CobarClient和国内的Guzz,都是用的这种事务模式。

 

 

当然,读写分离的实现, 数据库的垂直分割(根据业务功能进行分库), 水平分割(大表的分割),以及应用本身不同系统模块的分割也是需要考虑的。这些对于系统的水平扩展都是非常非常重要的。

 

同时,为了尽可能的减轻系统压力,有必要采取一些静态化以及缓存技术(对象缓存,静态缓存,页面缓存,局部缓存)以及

对于静态资源进行单独分割(比如:图片服务器,脚本服务器等).

 

最后从系统设计层面上讲有一个比较重要的原则就是能异步的地方尽量异步。异步对于实现系统的分割以及水平扩展非常有效。

 

 

有时间偶去研究一下Guzz然后跟大家做一个比较详细的分享。

 

最后,以源自Ebay的我很喜欢的一句话来结束这篇小文:

Partition Everything,

Asynchrony Everywhere,

Automate Everything,

Everything Fails,

Embrace Inconsistency,

Expect (R)evolution,

Dependencies Matter,

Respect Authority,

Never Enough Data,

Custom Infrastructure.

 

 

分享到:
评论

相关推荐

    分布式理论系列 论文汇总

    首先,A brief history of Consensus, 2PC and Transaction Commit的文章对分布式系统中的一致性问题、两阶段提交协议以及事务提交的整个发展历史进行了回顾和总结,为我们理解分布式系统中事务处理的发展提供了宝贵...

    基于软件定义的航天器分布式电源系统设计.pdf

    分布式系统能够有效提升航天器电源系统的适应性,增强对不同工作模式的适应能力,并且可以通过重构的方式响应各种故障和异常情况,保障整个航天器任务的可靠性。 软件定义的智能功率单元是本篇文章提出的一种新型...

    Go-gokv是一个分布式K-V存储系统类似etcd

    在分布式系统中,键值对存储是一种常用的数据存储模型,它将数据以键(Key)和值(Value)的形式存储,并允许通过键进行快速查找。这种模型非常适合用于缓存、配置管理、元数据服务等场景。 gokv的设计目标之一是高...

    Hadoop分布式文件系统使用.pdf

    ### Hadoop分布式文件系统使用指南 #### Hadoop分布式文件系统(HDFS)概述 Hadoop分布式文件系统(HDFS)是Hadoop项目的核心组件之一,主要用于存储和管理大规模数据集。它提供了一种高容错性的文件存储方式,...

    基于IEC 61499分布式智能照明控制系统的设计.pdf

    IEC 61499是一种功能块应用标准,它允许控制任务被封装成功能块,并在分布式系统中实现互操作和灵活配置。该系统设计的初衷是满足智能楼宇中照明子系统的需求,通过分层和分区域的控制方式,实现对一栋大楼内部照明...

    基于ARM的分布式测试系统时钟同步研究及实现.pdf

    在现代信息技术的发展过程中,分布式系统的研究与应用越来越受到重视。分布式系统通常由分散在不同地理位置的多个计算节点组成,它们之间通过网络进行通信和协调,共同完成复杂的任务。在这些系统中,时间同步是保证...

    用Remoting分布式处理方式

    总结起来,这个压缩包提供了一个学习.NET Remoting的起点,对于想要了解或掌握分布式系统开发的.NET程序员来说,这是一个很好的实践项目。通过深入研究并运行示例,可以加深对.NET Remoting工作原理的理解,并能将其...

    EDFA对长距离分布式光纤传感系统的附加拍频噪声研究.pdf

    总结来说,本篇文章通过对EDFA在长距离分布式光纤传感系统中引入的附加拍频噪声的研究,提出了一种新的测试方法,有助于更准确地评估和优化光纤传感系统,提高其在实际应用中的性能。同时,文章也为后续的相关研究...

    分布式事务

    总结起来,分布式事务是保证大规模分布式系统数据一致性的重要手段,涉及到数据库理论、并发控制和故障恢复等多个领域。Spring框架和WebLogic Server这样的工具为开发者提供了实现分布式事务的便利,使得在复杂的...

    双活数据库演绎分布式.pdf

    总结来说,银行业务系统的双活数据库和分布式系统架构,是解决大规模数据处理和高可用需求的有效手段。本文介绍的双活数据中心方案,通过跨楼宇双机房建设、分布式存储和网络技术的应用,有效解决了传统架构中遇到的...

    分布式锁与信号量 分布式同步控制

    在现代分布式系统中,确保各个节点间的协调一致以及数据的一致性至关重要。分布式同步控制技术旨在通过一系列机制和算法来实现这一点,确保分布式环境下的系统稳定性和高效运行。本文将详细介绍分布式同步控制的关键...

    分布式分油机仿真面板的设计与实现.pdf

    分布式分油机仿真面板的设计与实现涉及了船舶工程、分布式系统、嵌入式系统设计以及通信协议等多个IT和工程领域的知识。以下为详细的分析与总结: 1. 分布式系统的概念与应用: 分布式系统是一种由多个分散的、通过...

    分布式并发控制技术.pdf

    针对这一点,分布式系统中可能会采用不同的锁技术。在没有数据重复存储的情况下,可以使用分布式锁技术,每个节点设有局部锁管理器,负责处理本地数据的加锁和释放锁请求。而在有数据重复存储的情况下,可能会采用...

    分布式环境下多关键词并行密文检索方案.pdf

    在分布式系统中,数据可以存储在不同的节点上,检索操作可以并行地在多个节点上执行,从而实现并行化检索。这样的设计不仅可以显著提高检索速度,还可以通过增加节点数量来提高系统的整体性能。 系统的实现需要考虑...

    云计算环境下分布式文件系统的负载平衡研究.pdf

    为了实现这一点,云计算系统的设计必须考虑如何快速有效地处理节点的加入和离开,以及如何在动态变化的环境中保持负载均衡。 ### 节点负载不均衡的影响 节点的负载不均衡会严重影响系统性能。在云计算环境中,如果...

    一种分布式缓存系统的关键技术及应用.pdf

    总结来说,分布式缓存系统是当前处理大数据挑战的有效技术方案之一。它以NoSQL数据库的形式,为新型应用提供了高并发、低延迟以及海量数据存储和处理的技术解决方案。而了解和掌握这些关键技术,对于IT行业人员来说...

    磁浮交通系统动力学分布式协同仿真接口的设计与实现.pdf

    在描述和标签中提及的“分布式”、“分布式系统”和“分布式开发”是相关联的概念,它们都强调了在不同的硬件或网络资源上分布任务或数据处理的计算模式。这样的系统设计能够有效利用多点资源,提高系统的可伸缩性、...

    分布式文件元数据管理系统设计.pdf

    总结来说,分布式文件元数据管理系统的设计是一个复杂而细致的过程,它需要考虑到数据规模、应用场景、系统架构、数据库设计、接口设计、数据同步以及性能优化等多方面因素。这个系统的设计和实现对于推动大规模数据...

Global site tag (gtag.js) - Google Analytics