主流分布式系统架构分析

合集下载

计算机操作系统分布式系统基础知识了解分布式系统的架构和通信模型

计算机操作系统分布式系统基础知识了解分布式系统的架构和通信模型

计算机操作系统分布式系统基础知识了解分布式系统的架构和通信模型分布式系统是由多台计算机组成的系统,这些计算机通过网络相互连接,共同完成某项任务。

与传统的单机系统相比,分布式系统具有更高的性能和可靠性。

在分布式系统中,计算机之间可以进行通信和数据传输,从而实现资源共享和协同工作。

本文将介绍分布式系统的基础知识,包括架构和通信模型。

一、分布式系统的架构分布式系统的架构包括两种常见的模式:客户端-服务器模式和对等模式。

1. 客户端-服务器模式客户端-服务器模式是一种常见的分布式系统架构。

在这种架构中,有一个或多个客户端计算机与一个或多个服务器计算机进行通信。

客户端发送请求,而服务器接收请求并提供相应的服务。

这种架构适用于客户端与服务器之间的任务划分明确,客户端通常是终端用户,而服务器则负责处理客户端的请求。

2. 对等模式对等模式是另一种常见的分布式系统架构。

在这种架构中,系统中的每个计算机都可以充当客户端和服务器。

对等模式适用于互相合作的多个计算机之间的任务分布不明确的情况。

在对等模式中,每个计算机都具有相同的地位,可以互相发送请求和提供服务。

二、分布式系统的通信模型在分布式系统中,计算机之间的通信至关重要。

常见的分布式系统通信模型包括远程过程调用(RPC)和消息传递模型。

1. 远程过程调用(RPC)远程过程调用是一种通信模型,它允许分布式系统中的计算机通过类似于本地过程调用的方式进行通信。

在RPC中,客户端计算机调用远程服务器上的过程,就像调用本地过程一样。

远程过程调用可以方便地实现分布式系统中的函数调用和数据传输。

2. 消息传递模型消息传递模型是另一种常见的分布式系统通信模型。

在消息传递模型中,计算机之间通过发送和接收消息进行通信。

发送方将消息发送到通信网络中,接收方从网络中接收消息。

消息传递模型灵活性较高,可以支持异步通信和大规模系统的构建。

三、总结分布式系统是由多台计算机组成的系统,具有高性能和可靠性的优势。

分布式体系结构

分布式体系结构

分布式体系结构一、分布式计算分布式计算是指将计算任务分布在多个计算机上进行处理,以实现计算效率的提高和计算成本的降低。

分布式计算系统通常由一组相互连接的计算机组成,这些计算机协同工作,共同完成计算任务。

在分布式计算中,不同的计算机可以运行不同的操作系统和编程语言,这使得分布式计算具有高度的灵活性和可扩展性。

二、分布式存储分布式存储是指将数据存储在多个计算机上,以实现数据的高可用性和可扩展性。

与传统的中心式存储相比,分布式存储具有更高的可靠性和灵活性。

在分布式存储系统中,数据被分散存储在多个节点上,这使得数据备份和恢复更加容易和可靠。

同时,分布式存储也便于数据的扩展和维护。

三、分布式数据库分布式数据库是指将数据库系统建立在多个计算机上,以实现数据的分布式存储和处理。

与传统的集中式数据库相比,分布式数据库具有更高的可扩展性和可靠性。

在分布式数据库中,数据被分散存储在多个节点上,这使得数据备份和恢复更加容易和可靠。

同时,分布式数据库也便于数据的扩展和维护。

四、分布式网络分布式网络是指将网络结构建立在多个计算机上,以实现网络的分布式管理和控制。

与传统的中心式网络相比,分布式网络具有更高的可靠性和灵活性。

在分布式网络中,不同的计算机可以运行不同的操作系统和协议栈,这使得分布式网络具有高度的灵活性和可扩展性。

五、分布式安全分布式安全是指为分布式系统提供安全保障的技术和方法。

在分布式系统中,由于计算和数据是分布的,因此安全问题也呈现出分布式的特点。

为了保证分布式系统的安全性,需要采取一系列的安全措施和技术手段,如身份认证、访问控制、加密传输等。

六、分布式管理分布式管理是指对分布式系统进行管理和维护的技术和方法。

在分布式系统中,由于计算和数据是分布的,因此管理问题也呈现出分布式的特点。

为了保证分布式系统的稳定性和可靠性,需要采取一系列的管理措施和技术手段,如监控、日志、故障排除等。

七、分布式监控分布式监控是指对分布式系统进行监控和优化的技术和方法。

主流分布式系统架构分析

主流分布式系统架构分析

主流分布式系统架构分析主流分布式系统架构指的是广泛应用于实际生产环境的分布式系统架构,包括电子商务、社交媒体、云计算等领域。

下面将从功能分层、数据存储和处理、一致性保证、容错性和可扩展性等方面对主流分布式系统架构进行分析。

首先,主流分布式系统架构通常采用功能分层的设计,将系统功能划分为不同的子系统。

常见的分层包括用户界面层、应用逻辑层、数据持久化层等。

用户界面层负责用户交互和展示,应用逻辑层负责处理业务逻辑,数据持久化层负责数据的存储和读写。

这种分层设计可以使系统的各个部分独立,易于维护和扩展。

其次,主流分布式系统架构通常采用多种数据存储和处理技术。

常见的数据存储包括关系数据库、分布式文件系统、NoSQL数据库等。

关系数据库适合处理结构化数据,分布式文件系统适合存储大量的非结构化数据,NoSQL数据库适合处理具有高度变化结构的数据。

此外,主流分布式系统架构还使用了数据缓存、数据分片、数据备份等技术来提高系统的性能和可靠性。

第三,一致性是分布式系统架构中的一个重要问题。

主流分布式系统架构通常采用一致性保证技术来解决一致性问题,如分布式事务、两阶段提交、Paxos算法等。

这些技术可以确保在多个节点上的操作是一致的,从而保证数据的正确性。

第四,容错性是分布式系统架构中的另一个重要问题。

主流分布式系统架构通常采用备份和冗余机制来提高系统的容错性。

常见的技术包括数据备份、容错协议、故障检测和恢复等。

这些技术可以保证系统在部分节点故障的情况下仍然能够正常运行。

第五,可扩展性是分布式系统架构中的关键问题之一、主流分布式系统架构通常采用水平扩展的方法来提高系统的可扩展性。

即通过增加计算节点或存储节点来增加系统的处理能力。

此外,还有一些分布式计算框架(如Hadoop、Spark等)可以提供高度可扩展的计算能力。

综上所述,主流分布式系统架构在功能分层、数据存储和处理、一致性保证、容错性和可扩展性等方面都有相应的设计和技术支持。

常用的分布式体系结构

常用的分布式体系结构

常用的分布式体系结构分布式体系结构是指将一个系统划分为多个相互独立的模块,并将这些模块部署在不同的计算节点上,通过消息传递或远程调用等方式进行协作,从而形成一个分布式的整体系统。

常用的分布式体系结构有以下几种:1. 客户-服务器体系结构(Client-Server Architecture):该体系结构是最常见的一种,将系统划分为客户端和服务器端两个部分。

客户端负责发送请求并接收返回的数据,而服务器端负责处理请求并返回结果。

这种体系结构适用于对于响应时间和资源利用率要求较高的系统,如网站和应用程序。

2. 三层架构(Three-Tier Architecture):该体系结构将系统划分为表示层、应用层和数据层三个部分。

表示层负责处理用户界面交互,应用层负责处理业务逻辑,数据层负责持久化数据。

这种体系结构可以提高系统的可维护性和可扩展性,并且可以将处理逻辑和数据逻辑分离,使得系统更加灵活。

3. 微服务架构(Microservices Architecture):该体系结构将系统划分为多个小型的、独立的服务。

每个服务都可以独立地开发、部署和扩展,并且通过轻量级的通信机制进行协作。

这种体系结构可以提高系统的可伸缩性和可灵活性,并且可以根据需求独立地进行服务的添加和修改。

4. 面向消息的体系结构(Message-Oriented Architecture):该体系结构将系统划分为多个组件,这些组件通过消息队列进行通信。

每个组件都可以独立地生产和消费消息,从而实现了松耦合的组件之间的通信。

这种体系结构适用于异步通信和解耦系统各部分的场景,如事件驱动系统和消息传递系统。

5. 多层体系结构(Multi-Tier Architecture):该体系结构将系统划分为多个层次,每个层次都具有不同的功能。

例如,前端层负责处理用户界面,业务逻辑层负责处理业务逻辑,数据访问层负责与数据库交互。

这种体系结构可以提高系统的可扩展性和可复用性,并且可以将不同的功能独立地进行开发、部署和测试。

分布式架构详解

分布式架构详解

分布式架构详解随着互联网的迅猛发展,越来越多的应用场景需要处理海量数据和高并发请求。

而单机架构往往无法满足这些需求,因此分布式架构应运而生。

分布式架构是指将一个应用系统划分为多个子系统,分别部署在不同的服务器上,并通过网络进行通信和协作,以实现高性能、高可用和可扩展的系统。

分布式架构的核心思想是将一个复杂的问题分解为多个简单的子问题,并通过协作完成整体任务。

每个子系统负责处理一部分业务逻辑,通过消息传递、远程调用等方式进行通信,最终协同工作,提供完整的功能。

在分布式架构中,常见的组件包括:负载均衡器、分布式缓存、分布式数据库等。

负载均衡器用于将请求分发到多个服务器上,以实现负载均衡和高可用。

分布式缓存用于存储频繁访问的数据,以减轻数据库的压力。

分布式数据库则将数据分片存储在多个节点上,提高数据存取的并发能力和处理能力。

在分布式架构中,节点之间的通信是关键。

常见的通信方式包括:同步调用、异步调用和消息队列。

同步调用是指调用方等待被调用方返回结果后才继续执行,适用于实时性要求较高的场景。

异步调用是指调用方不等待被调用方返回结果,而是继续执行自己的逻辑,被调用方将结果回调给调用方,适用于实时性要求不高的场景。

消息队列则是将消息发送到队列中,由消费者异步消费,适用于解耦和削峰填谷的场景。

分布式架构的优点在于可扩展性和高可用性。

由于系统可以通过增加节点来扩展性能,因此可以满足不断增长的用户需求。

同时,由于系统的各个组件部署在不同的服务器上,即使某个节点发生故障,系统仍然可以继续提供服务,提高了系统的可用性。

然而,分布式架构也面临一些挑战和问题。

首先,节点之间的通信增加了系统的复杂性,需要考虑网络延迟、数据一致性等因素。

其次,分布式环境下的故障和并发问题更加复杂,需要引入分布式事务、分布式锁等机制来保证数据的一致性和可靠性。

此外,分布式架构的设计和开发需要更高的技术水平和复杂度,对开发人员的要求更高。

总结起来,分布式架构是为了解决大规模数据处理和高并发请求而提出的一种架构模式。

分布式系统的架构思路

分布式系统的架构思路

分布式系统的架构思路1.客户端-服务器架构:这是最常见的分布式系统架构,其中客户端发送请求,服务器处理请求并返回结果。

服务器可以是单个设备或多个设备的集群。

这种架构简单明了,易于扩展和维护。

2.主从架构:在主从架构中,有一个主服务器和多个从服务器。

主服务器负责处理所有的写操作,而从服务器负责处理读操作。

这种架构提高了系统的并发性能和可靠性。

3.对等网络架构:在对等网络架构中,每个节点都可以充当客户端和服务器。

节点之间相互通信,共享资源和处理任务。

这种架构适用于需要大量互动和通信的系统,如P2P文件共享。

4.分层架构:在分层架构中,系统被划分为多个层级,每个层级都有自己的功能和任务。

每个层级只与相邻的层级通信,使系统更加模块化和可扩展。

5.微服务架构:微服务架构将系统划分为多个小型独立的服务,每个服务都有自己的数据库和业务逻辑。

这种架构使系统更加灵活,易于部署和维护,并提高了系统的容错能力。

6.消息队列架构:消息队列架构使用消息传递机制来实现系统间的通信和协调。

消息发送者将消息发布到队列中,而消息接收者从队列中接收并处理消息。

这种架构解耦了发送者和接收者,使系统更加可靠和可扩展。

7. MapReduce架构:MapReduce架构适用于大数据处理。

其核心思想是将处理任务分解为两个阶段:Map阶段将输入数据分成多个片段进行并行处理,Reduce阶段将结果归约为最终的输出。

以上是一些常见的分布式系统架构思路,每种架构都有适用的场景和优势。

在设计分布式系统时,需要根据实际需求和系统特点选择合适的架构,并考虑系统的可靠性、可扩展性、性能等因素。

同时,还需要考虑通信协议、数据一致性和容错机制等方面的设计。

因为分布式系统的架构设计是一个复杂的问题,需要综合考虑多个因素,所以在实践中需要仔细分析和评估各种选项。

大型分布式系统的架构设计与优化

大型分布式系统的架构设计与优化

大型分布式系统的架构设计与优化随着互联网的普及,越来越多的服务被部署在网络上,大型分布式系统逐渐成为互联网时代的基础设施。

在急速发展的数字经济中,大型分布式系统的可靠性、弹性和扩展性愈发重要。

因此,大型分布式系统的架构设计和优化成为了互联网领域最为关键的技术之一。

一、大型分布式系统的基础架构大型分布式系统通常由多台计算机、存储设备和网络设备组成。

这些设备通过网络进行通信和交互,构成一个庞大的、分布式的系统。

大型分布式系统通常有以下三个基础架构:1. 通信层大型分布式系统的每个组成部分都需要通过网络进行通信和交互。

因此,通信层是大型分布式系统非常重要的一部分。

通信层需要保证数据的可靠性、安全性和实时性,同时需要提高通信效率,保障系统的高可用性和高性能。

2. 存储层大型分布式系统需要支持海量数据的存储和管理。

因此,存储层也是大型分布式系统的核心部分。

存储层需要保证数据的可靠性和安全性,同时需要提高数据的读写效率和存储效率。

3. 服务层大型分布式系统需要提供多种服务,包括计算服务、存储服务、网络服务等。

服务层需要负责分配和管理系统资源,保障系统的稳定性和高效性。

二、大型分布式系统的架构设计大型分布式系统的架构设计需要考虑多个方面,包括系统可靠性、性能、扩展性、弹性等。

以下是大型分布式系统的架构设计的一些关键点:1. 模块化设计大型分布式系统通常由多个模块组成,每个模块负责不同的功能。

因此,模块化设计是大型分布式系统架构设计的重要部分。

每个模块需要具备高内聚、低耦合的特点,同时需要提供清晰的接口和协议,使得不同模块之间可以进行有效的通信和交互。

2. 数据分散性大型分布式系统的数据通常分散存储在不同的设备中,这样可以提高系统的可靠性和存储效率。

同时,数据分散也要保证数据的一致性和可靠性。

数据分散需要考虑配置、备份、同步等方面,确保数据的完整性和安全性。

3. 弹性设计大型分布式系统需要具备弹性,即在面对故障和异常情况时能够自动化地进行调整和修复。

常用的分布式体系结构

常用的分布式体系结构

常用的分布式体系结构分布式结构是相对于集中式结构而言的,整个应用系统的执行是分成多个不同的部分并且执行在不同的机器之中。

常用的分布式体系结构有两层C/S(Client/Server)体系结构和三层C/S体系结构。

(1)两层C/S体系结构两层C/S体系结构将数据存取和应用程序分离开来,由数据服务器执行数据操作,客户机来执行应用程序。

用户在客户端通过网络同服务器打交道,客户端包括用户界面和业务逻辑,网络上传送的数据主要是客户端向服务器发出的请求以及服务器发送给客户端的响应结果和出错息。

两层C/S体系结构能较好的实现分布式机制,它优化了网络利用率,减少网络流量,客户机只把请求的内容传给服务器,服务器也只是返回最终结果,系统中不必传输整个数据文件的内容。

两层C/S体系结构响应时间较短,其原因之一是网络的流量减少了,特别是如果允许在本地留下远端数据库的副本时,数据查询的性能会得到很大的提高。

另外,通过把应用程序同它们处理的数据隔离,可以使数据具有独立性,这样,服务器就能对数据的存取进行充分而且有效的控制,未通过鉴别和授权的用户将无法对数据进行非法访问,系统数据的完整性可以得到充分的保证。

然而随着息系统结构的复杂和规模的日益扩展,两层C/S 系统结构成功的背后却逐渐暴暴露其构架上的缺点。

具体表现在以下几方面:对客户端处理能力要求高,数据显示和数据处理都由客户端完成的工作方式增加了客户端的处理负担,对客户端的软硬件性能要求高,增大了系统投资规模。

代码的可重用性差,客户端的处理逻辑和代码只能为其单独使用,导致重复开辟,延长了开辟周期,提高了开辟成本。

系统可维护性差,系统数据处理逻辑或业务逻辑的改动需要修改每个客户端的数据处理步伐,为维护工作带来极大的不便。

可扩展性差,由于受到客户端与数据库服务器有效连接数目的限制,两层式应用步伐的规模受到很大限制,扩展困难,不利于用户应用系统的逐步完善和扩充,也不能很好地保护用户已有投资。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主流分布式系统架构分析主流分布式---系统架构分析目录一、前言 (3)二、SOA架构解析 (3)三、微服务( Microservices )架构解析 (7)四、SOA和微服务架构的差别 (9)五、服务网格( Service Mesh )架构解析 (9)六、分布式架构的基本理论 ......................................................................................... 1 1七、分布式架构下的高可用设计 (15)八、总结 .......................................................................................................... 1 9、八、、》本文我们来聊一聊目前主流的分布式架构和分布式架构中常见理论以及如何才能设计出高可用的分布式架构好了。

分布式架构中,SOA和微服务架构是最常见两种分布式架构,而且目前服务网格的概念也越来越火了。

那我们本文就先从这些常见架构开始。

、SOA架构解析SOA全称是:Service Oriented Architecture ,中文释义为"面向服务的架构",它是一种设计理念,其中包含多个服务,服务之间通过相互依赖最终提供一系列完整的功能。

各个服务通常以独立的形式部署运行,服务之间通过网络进行调用。

架构图如下:Appl跟SOA 相提并论的还有一个 ESB (企业服务总线),简单来说ESB 就是一根管道,用来连接各个服 务节点。

ESB 的存在是为了集成基于不同协议的不同服务, ESB 做了消息的转化、解释以及路由的工 作,以此来让不同的服务互联互通;随着我们业务的越来越复杂, 会发现服务越来越多,SOA 架构下,它们的调用关系会变成如下形式:App 2App 6App 3App 4很显然,这样不是我们所想要的,那这时候如果我们引入ESB的概念,项目调用就又会很清晰,如下:SOA所要解决的核心问题系统间的集成:我们站在系统的角度来看,首先要解决各个系统间的通信问题,目的是将原先系统间散乱、无规划的网状结构,梳理成规整、可治理的星形结构,这步的实现往往需要引入一些概念和规范,比如ESB、以及技术规范、服务管理规范;这一步解决的核心问题是【有序】。

系统的服务化:我们站在功能的角度,需要把业务逻辑抽象成可复用、可组装的服务,从而通过服务的编排实现业务的快速再生,目的是要把原先固有的业务功能抽象设计为通用的业务服务、实现业务逻辑的快速复用;这步要解决的核心问题是【复用】。

业务的服务化:我们站在企业的角度,要把企业职能抽象成可复用、可组装的服务,就要把原先职能化的企业架构转变为服务化的企业架构,以便进一步提升企业的对外服务的能力。

“前面两步都是从技术层面来解决系统调用、系统功能复用的问题”。

而本步骤,则是以业务驱动把一个业务单元封装成一项服务。

要解决的核心问题是【高效】。

三、微服务(Microservices )架构解析微服务架构和SOA架构非常类似,微服务只是SOA的升华,只不过微服务架构强调的是“业务需要彻底的组件化及服务化”,原单个业务系统会被拆分为多个可以独立开发、设计、部署运行的小应用。

这些小应用间通过服务化完成交互和集成。

组件表示的就是一个可以独立更换和升级的单元,就像PC中的CPU、内存、显卡、硬盘一样,独立且可以更换升级而不影响其他单元。

若我们把PC 中的各个组件以服务的方式构建,那么这台PC只需要维护主板(可以理解为ESB)和一些必要的外部设备就可以。

CPU、内存、硬盘等都是以组件方式提供服务,例如PC需要调用CPU做计算处理,只需知道CPU这个组件的地址就可以了。

微服务的特征1. 通过服务实现组件化2. 按业务能力来划分服务和开发团队3. 去中心化4. 基础设施自动化(devops 、自动化部署)四、 S OA 和微服务架构的差别微服务不再强调传统 SOA 架构里面比较重的 ESB 企业服务总线,同时以 SOA 的思想进入到单个 业务系统内部实 现真正的组件化。

BILLING©PAYMENTSNOTIFICATIONPASSENGER MANACEMENTTW1*QAPIGATEWAYDRIVER WEB UlDRIVER MANACEMENTiTRIPDocker容器技术的出现,为微服务提供了非常便利的条件,比如更小的部署单元,每个服务可以通过类似Spring Boot 或者Node等技术独立运行。

还有一个点大家应该可以分析出来,SOA注重的是系统集成,而微服务关注的是完全分离。

五、服务网格(Service Mesh )架构解析17年年底,非侵入式的Service Mesh 技术慢慢走向了成熟。

Service Mesh ,中文释义“服务网格”,作为服务间通信的基础设施层在系统中存在。

如果要用一句话来解释什么叫Service Mesh ,我们可以将它比作是应用程序或者说微服务间的TCP/IP层,负责服务间的网络调用、熔断、限流和监控。

我们都知道在编写应用程序时程序猿一般都无须关心TCP/IP这一层(比如提供HTTP协议的Restful应用),同样如果使用服务网格我们也就不需要关系服务间的那些原来是由应用程序或者其他框架实现的事情(熔断、限流、监控等),现在只要交给Service Mesh 就可以了。

服务网格架构图如下:Service Mesh p s匚ontrol PlaneComputer AService A SidecarSrrviGH D iMOYVTyFhw ControlNetworkingStack目前流行的Service Mesh 开源软件有Linkerd、Envoy 和Istio,而最近Buoyant (开源Linkerd 的公司)又发布了基于Kubernetes 的Service Mesh 开源项目Conduit。

关于微服务和服务网格的区别,我这样理解:微服务更注重服务之间的生态,专注于服务治理等方面,而服务网格更专注于服务之间的通信,以及和DevOps更好的结合等。

服务网格的特征1.应用程序间通讯的中间层2.轻量级网络代理3.应用程序无感知4.解耦应用程序的重试/超时、监控、追踪和服务发现六、分布式架构的基本理论在说CAP、BASE理论之前,我们先要了解下分布式一致性的问题。

实际上对于不同业务的服务,我们对数据一致性的要求是不一样的,如12306,它要求数据的严格一致性,不能把票卖给用户以后却发现没有座位了;再比如银行转账,我们通过银行转账的时候,一般都会收到一个提示:转账申请将会在24小时内到账。

实际上这个场景满足的是最终钱只要转账成功了即可,同时如果钱没汇出去还要保证资金不丢失。

所以说,用户在使用不同的服务的时候对数据一致性的要求是不一样的。

关于分布式一致性问题分布式系统中要解决的一个非常重要的问题就是数据的复制。

在我们的日常开发经验中,相信大多数开发人员都遇过这样的问题:在做数据库读写分离的场景中,假设客户端A将系统中的一个值V由V1变更为V2,但客户端B无法立即读取到V的最新值,e而需要在一段时间之后才能读取到。

这再正常不过了,因为数据库复制之间存是在延时的。

appmaster slave所谓分布式一致性的问题,就是指在分布式环境中引入数据复制机制后,不同数据节点之间可能会出现的、且无法依靠计算机应用程序自身解决的数据不一致的情况。

简单来说,数据一致性就是指在对一个副本数据进行变更的时候,必须确保也能够更新其它的副本,否则不同副本之间的数据将出现不一致。

那么如何去解决这个问题呢?按照正常的思路,我们可能会想到既然是网络延迟导致的问题,那么我们就把同步动作进行阻塞,用户2在查询的时候必须要等数据同步完成以后再来做但这个方案会非常影响性能。

如果同步的数据比较多或比较频繁,那么阻塞操作可能会导致整个新系统不可用。

故我们没有办法找到一种既能够满足数据一致性、又不影响系统性能的方案,所以就诞生了一个一致性的级别:1.强一致性:这种一致性级别是最符合用户直觉的,它要求系统写入的是什么,读出来的也要是什么,用户体验好,但实现起来往往对系统的性能影响较大。

2.弱一致性:这种一致性级别约束了系统在写入成功后,不保证立即可以读到写入的值,也不保证多久之后数据能够达到一致,但会尽可能地保证到某个时间级别(如秒级别)后,数据能够达到一致状态。

3.最终一致性:最终一致性其实是弱一致性的一个特例,系统会保证在一定时间内,能够达到数据一致的状态。

这里之所以将最终一致性单独提出来,是因为它是弱一致性中非常推崇的一种一致性模型,也是业界在大型分布式系统的数据一致性上用的比较多的一致性模型。

CAP理论它是一个经典的分布式系统理论。

CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)及分区容错性(P:Partition toleranee) 这三个基本要求,最多只能同时满足其中两项。

CAP理论在互联网界有着广泛的知名度,也被称为“帽子理论”,它是由Eric Brewer 教授在2000 年举行的ACM 研讨会提出的一个著名猜想:一致性(Consistency)、可用性(Availability)、分区容错(Partition-toleranee) 三者无法在分布式系统中被同时满足,并且最多只能满足两个!一致性:所有节点上的数据时刻保持同步可用性:每个请求都能接收一个响应,无论响应成功或失败分区容错:系统应该持续提供服务,即使系统内部(某个节点分区)有消息丢失。

比如交换机失败、网址网络被分成几个子网,形成脑裂、服务器发生网络延迟或死机,导致某些server与集群中的其他机器失去联系。

分区是导致分布式系统可靠性问题的固有特性,从本质上来看,CAP理论的准确描述不应该是从 3 个特性中选取两个,所以我们只能被迫适应,根本没有选择权。

CAP并不是一个普适性原理和指导思想,它仅适用于原子读写的NoSql场景中,并不适用于数据库系统。

BASE理论从前面的分析中我们知道:在分布式(数据库分片或分库存在的多个实例上)前提下,CAP理论并不适合数据库事务(因为更新一些错误的数据而导致的失败,无论使用什么高可用方案都是徒劳的,因为数据发生了无法修正的错误)。

此外XA事务虽然保证了数据库在分布式系统下的ACID (原子性、一致性、隔离性、持久性)特性,但同时也带来了一些性能方面的代价,对于并发和响应时间要求都比较高的电商平台来说,是很难接受的。

相关文档
最新文档