文章目录
什么是分布式系统
分布式系统也被称为分布式计算和分布式数据库,它是位于不同机器上的独立组件的集合,这些组件相互共享消息以实现共同的目标。
因此,对于最终用户来说,分布式系统看起来就像是一个接口或一台计算机。这样做的目的是,系统可以在规避故障的同时最大化资源和信息。
分布式系统是怎样进行工作的
分布式计算最重要的功能有:
资源共享——无论是硬件、软件还是数据都可以共享
开放性——用来设计开发和共享的软件
并发性——多台机器可以同时处理相同的功能
可伸缩性——当扩展到多台机器时,计算和处理能力成倍增长
容错性–简单快速检测和恢复系统中的故障
透明度性——在系统中定位一个节点,并与其进行通信需要有限权限。
现代分布式系统已经发展到包括自治进程,这些进程可以运行在同一台物理机器上,但通过彼此交换消息进行交互。
现实中的分布式系统
网络
分布式系统的最早例子发生在1970年代,当时以太网被发明,LAN(局域网)被创建。计算机将第一次能够用本地IP地址向其他系统发送信息。点对点网络发展了,电子邮件和我们所知道的因特网继续成为分布式系统中最大的,不断增长的例子。随着互联网由IPv4向IPv6的转变,分布式系统也从“LAN”向“internet”演变。
电信网络
电话和蜂窝网络也是分布式网络的例子。电话网络已经存在了一个多世纪,它开始作为一个早期的对等网络的例子。蜂窝网络是一种分布式网络,其基站物理分布在称为蜂窝的区域。随着电话网络向VOIP (IP上的语音)发展,它作为分布式网络的复杂性也在不断增长。
分布式实时系统
许多行业使用本地和全球分布的实时系统。航空公司使用飞行控制系统,Uber和Lyft使用调度系统,制造厂使用自动化控制系统,物流和电子商务公司使用实时跟踪系统。
并行处理
过去,并行计算和分布式系统之间是有区别的。并行计算关注的是如何在访问相同数据和内存的多个线程或处理器上运行软件。分布式系统意味着拥有自己处理器和内存的独立机器。随着现代操作系统、处理器和云服务的兴起,分布式计算也包含了并行处理。
分布式人工智能
分布式人工智能是一种使用大规模计算能力和并行处理来学习和处理使用多代理的大型数据集的方法。
分布式数据库系统
分布式数据库是位于多个服务器和/或物理位置上的数据库。可以跨系统更新复制数据。
大多数流行的应用程序使用分布式数据库,并且需要了解分布式数据库系统的同质或异构特性。
同质分布式数据库意味着每个系统都有相同的数据库管理系统和数据模型。通过添加新的节点和位置,它们更容易管理和扩展性能。
异构分布式数据库允许使用多种数据模型和不同的数据库管理系统。网关用于在节点之间转换数据,通常是合并应用程序和系统的结果。
分布式系统体系结构
分布式系统必须有一个将所有组件(机器、硬件或软件)连接在一起的网络,这样它们就可以传输消息来彼此通信。
该网络可以通过IP地址、电缆甚至电路板连接。
机器之间传递的消息包含系统希望共享的数据形式,如数据库、对象和文件。
消息的可靠通信方式是发送、接收、确认或节点在失败时如何重试,这是分布式系统的一个重要特性。
分布式系统的创建是出于必要,因为服务和应用程序需要扩展,新机器需要添加和管理。在分布式系统的设计中,需要考虑的主要权衡是复杂性和性能。
为了理解这一点,让我们看看分布式体系结构的类型及其优缺点。
分布式系统的架构类型
分布式应用程序和进程通常使用以下四种架构类型之一:
客户机-服务器:
在早期,分布式系统体系结构由服务器作为共享资源组成,如打印机、数据库或web服务器。它有多个客户端(例如,计算机后面的用户),这些客户端决定何时使用共享资源、如何使用和显示资源、更改数据并将其发送回服务器。像git这样的代码存储库就是一个很好的例子,它将智能放在了提交代码更改的开发人员身上。
今天,分布式系统体系结构已经演变为:
三层 : 在这种体系结构中,客户端不再需要智能,可以依赖中间层来进行处理和决策。大多数第一批web应用程序都属于这一类。中间层可以被称为代理,它从客户端接收请求(可以是无状态的),处理数据,然后将其转发到服务器。
多层 : 企业web服务首先创建了n层或多层系统架构。这普及了包含业务逻辑并与数据层和表示层交互的应用服务器。
点对点(Peer-to-peer) : 在这种架构中,没有集中的或特殊的机器来完成重物搬运和智能工作。所有的决策制定和职责都在涉及的机器之间进行分配,每个机器都可以承担客户端或服务器的角色。区块链就是一个很好的例子。
分布式系统的优缺点
分布式系统的优势:
分布式系统的最终目标是实现应用程序的可伸缩性、性能和高可用性。
主要优点包括:
无限水平伸缩-机器可以在任何需要的时候添加。
低延迟——让机器在地理位置上靠近用户,这将减少为用户提供服务的时间。
容错——如果一台服务器或数据中心宕机,其他服务器仍可为该服务的用户提供服务。
分布式系统的缺点:
每一个工程决策都有权衡。复杂性是分布式系统的最大缺点。有更多的机器,更多的消息,更多的数据在更多的方之间传递,这导致了以下问题:
数据集成与一致性
-能够同步的顺序变化的数据和状态的应用在一个分布式系统是具有挑战性的,特别是当有节点开始,停止或失败。
网络和通信故障
-消息可能没有发送到正确的节点或发送顺序不正确,从而导致通信和功能崩溃。
管理开销
-需要增加更多的智能,监控,日志,负载平衡功能,以可见的操作和故障的分布式系统