钱柜国际

首页 > 正文

阿里大牛详解分布式系统,大型网站分布式系统实战解析

www.redtrojan.com2019-08-24

11368879-05ece5e36e74afb5.png

分布式系统

分布式系统从原来的CORBA到EJB,Web和SOA,从集群到当前的NoSQL云计算和大数据Hadoop分布式系统,水平横向扩展Scala out/in是分布式系统设计的一个特性,可靠性容错性是两个品质指标。

什么是分布式系统?

大量服务器形成一个集合,该集合仍然是用户的整体连贯系统。

A. Tanenbaum定义:分布式网络计算机中组件之间的协调操作通过消息进行通信。

G. Coulouris定义:当您知道计算机崩溃时,您的软件将永远不会停止运行。

Leslie Lamport定义:分布式系统是旨在支持应用程序和服务开发的系统,这些应用程序和服务可以通过多个自治处理元素利用物理架构,这些处理元素不共享主内存,而是通过网络发送异步消息协作。

与分层应用程序不同:分层应用程序(例如,第3层)是分区应用程序逻辑,它是逻辑分层,而不是物理分层,而分布式系统DS是物理分层,与实际部署有关。

与传统的集中式系统相比:

集中式系统是一个扩展/扩展,扩展或升级服务器到大中型机器,或升级多核,增加CPU核心数量,集中垂直扩展适合用于计算更高的数据聚合度,分布式适用于计算松散数据,非结构化或半结构化数据。无论采用哪种扩展解决方案,都取决于业务数据的特征。

任何分布式系统总是需要完成两个任务:计算和存储。计算和存储的分离是分布式系统的重要特征。通常在集中式或独立式系统中,两者可以组合,例如,通过SQL语句实现查询后排序,查询是从存储中获取数据,排序是计算,所以SQL语句将实际计算与存储耦合。在处理大数据或大并发的情况下,这种方便的捆绑带来了性能问题,而分布式计算和分布式存储带来了复杂性,同时也为系统的处理能力开辟了空间。

分布式系统功能:

并发:共享资源,采用ACID或Base原则,参见:CAP定理。

分布式系统设计遵循CAP定理。 CAP是:一致性,可用性和分区容差。 CAP定理认为CAP只能满足其中两个。类。

可扩展性是一项重要功能,可通过扩展来实现高性能,高吞吐量,低延迟和延迟。

可靠性/可用性:故障发现和处理和恢复。如果用户无法访问系统,则该比例会增加,并且会被视为不可用。可用性公式:

可用性=正常运行时间/(正常运行时间+停机时间)

容错故障转移是指在发生错误时仍能正常工作的系统。表示此系统是容错的。

消息处理:具体产品有:RabbitMQ ZeroMQ Netty等。

异构性:不同的操作系统硬件程序语言开发人员,中间件是一种解决方案。

安全性:授权身份验证SSO单点登录Oauth等。

定位命令:

识别资源URL

命名服务命名服务

找到并查找Lookup

主要在SOA中查看服务查找。例如,Zookeeper实现服务查找。

透明度:

访问透明度:对本地和远程资源使用相同的操作

位置透明度:无需知道其物理或网络位置即可访问资源

并发透明度:当多个进程无法干扰阻止它们的过程时,多个进程可以同时运行对共享资源的访问

复制透明性:可以复制多个资源实例以提高可靠性和性能,但不需要特定于用户的应用程序。

故障透明度:当发生软件硬件故障时,用户和应用程序可以继续完成其任务而不受影响。

移动透明度:允许移动资源和客户存在于系统中。

性能透明度:允许系统重新配置以改善性能负载变化

缩放透明度:在不更改应用程序结构的情况下缩放或缩放系统大小以提高吞吐量处理。

分布式系统的挑战

分布式系统很难理解、设计、构建和管理。它们在设计中引入了比单台机器更多的变量,使得应用程序的根本原因难以发现。SLA(服务级别协议)是停机时间和/或性能下降的度量。大多数现代应用程序都具有所需的弹性SLA级别,通常会增加“9”(例如,每月99.9或99.99%的可用性)。每增加9个就变得越来越难以实施。

为了使事情变得更加复杂,我们越来越常见地看到:分布式系统故障的特点是间歇性错误或性能下降(通常称为功率限制)。这些故障模式需要更多的时间进行诊断。例如,Joyent运行一些分布式系统作为其云计算基础设施的一部分。在这种系统中,包括高可用性、分布式密钥/值存储,Joyent最近经历了短暂的应用程序超时。为了使大多数用户系统正常工作,响应的延迟也在SLA范围内。但是,5%到10%的请求超过了预先定义的程序超时。这样的失败不会在开发或测试环境中再次出现,它们通常会“消失”几分钟到几小时。从根本上说,消除这种故障是一种需要大量数据存储的系统分析。

这些系统包括:数据存储API(node.js)、关系数据库管理系统RDBMS(relational database management system)和系统内部(postgresql)以及操作系统和最终用户应用程序使用的键/值系统。最终,导致语义过度的根本问题是应用程序的语义锁定,但在确定之前需要大量的数据收集和关联工作,包括工程师在不同领域花费大量的工作时间和学习专业知识。

分布式系统受两个物理因素的限制:

节点数(可以增加所需的存储和计算能力)

节点之间的距离(信息传输的距离,最好是在光速下)。

这两个限制导致以下挑战:

单个节点因数量增加而失败的可能性(减少可用和增加的管理成本)

随着独立节点数量的增加,节点之间的通信消耗可能会增加(性能随着规模的增加而降低)

地理距离的增加会增加远端节点之间的通信延迟(降低某些操作的性能)

如何构建分布式系统

适用于分布式系统体系结构的最常见术语之一是SOA(面向服务的体系结构)。 SOA可以通过WS- *标准避免令人不愉快的CORBA(公共对象请求代理体系结构),这是一组松散耦合的Web服务,它们执行独立的小功能并且彼此独立。它们是灵活分布式系统的基础。与上一代相比,服务是新的过程,它们是正确的抽象层次系统中的离散函数。

构建面向服务的体系结构的第一步是确定每个功能的功能如何构成整体业务目标,将这些服务映射到离散服务,并具有独立的故障边界,可伸缩性和数据负载。确定每项服务时,您必须考虑以下事项:

地理。系统是在全球运营还是在地区运营?

数据隔离。系统是否提供单租户或多租户模型?

SLA。可用性延迟吞吐量必须定义一致性和冗余。

安全。必须考虑IAAA(身份,身份验证,授权和审计),数据机密性和隐私

可用性跟踪。了解系统的使用情况,作为系统的日常操作,例如容量规划。它还可以用于执行计费系统的使用和/或治理(配额/速度限制)。

部署和配置管理。系统如何部署更新?

分布式系统的模型抽象

系统模型(异步/同步)

故障模型(崩溃失败,分区)

一致性模型(强,最终)

通常,我们最熟悉的模式(例如,在分布式系统上实现共享内存抽象)太昂贵了。分布式系统越弱,元素的操作自由度越高,性能越高 - 但它也可能使管理变得困难。这需要我们有很大的智慧,而不是牺牲性能以方便管理。因此,将分布式系统视为统一的单一系统可能会阻碍分布式系统的扩展。

分布式系统遵循CAP法则,在高一致性和高可用性以及分区容差之间做出选择:

11368879-ce2ea72cd1e3e36b.png

CA(一致性高一致性+可用性高可用性)。保证使用2pc两阶段事务提交。它的缺点是无法实现分区容错。一旦操作失败,整个系统将出错并且不能容忍(没有鱼就要清水)。

CP(一致性高一致性+分区容差分区容错)。使用Paxos确保可用性降低。

AP(可用性高可用性+分区容差分区容错)。使用Gossip等来实现最终的一致性,例如Dynamo。

如何正确理解CAP理论?

分布式系统的设计技术:分区和复制

设计数据集有两种方法:

分区:它可以跨多个节点分割,以允许更多的并行处理。性能更好,但容错性低。

复制:它还可以在不同节点上复制或缓存,以减少客户端与服务器之间的距离,具有更高的容错能力,但复制会消耗性能。关键是要复制数据之间的一致性。弱一致性可提供更低的延迟和更高的可用性。

分布式系统的设计技术:时钟和序列

分布式系统对于计算和存储策略是不同的。数据存储主要是分区和复制,计算主要是为了保证事件的顺序,因为分布式计算任务是事件驱动的,比如Storm等。然后事件的顺序代表业务逻辑的顺序。事件有时是树形嵌套事件。可靠性是保证树形集合的所有事件都由网站作为事务原子执行。

如果你想免费学习(Java工程,分布式架构,高并发,高性能,深入,微服务架构,Spring,MyBatis,Netty,源代码分析)和其他技术,你可以添加q组:那里阿里是该组的大牛。现场直播技术和Java大型互联网技术视频可供所有人免费共享。欢迎您一起参加小组和交流学习,无论您是在改变职业生涯还是努力提高您的能力!

热门浏览
热门排行榜
热门标签
日期归档