本系列文章主要是对分布式系统的原理和一些范例做一个细致的介绍,争取对没有接触过分布式系统的人有一个帮助。
一.什么是分布式系统呢?没有具体的定义,仅仅是一个感性上的大体描述。分布式系统是若干独立计算机的集合体,这些计算机对于用户来说就像是单个相关系统。
看过上面的答案可能没有什么具体的概念,举几个分布式系统的例子吧。
现 在非常热门的一项技术---p2p技术,每一个客户端通过对自身的信息反馈,以及对所需信息的请求,有服务器进行去调度。在请求过程中,我们可以把其他客 户端当成一个个server;在反馈信息的过程中可以把自己当成server。服务器在这个网络中起到了一个支撑作用,它自己本身的计算处理并不是很多, 仅仅是反馈给请求client一个server列表而已。不过,这就是一个分布式系统,由每台计算机来进行各自运算,由服务器进行统一调度。
再 看看另一个例子吧---万维网。有可能你会有些疑惑,万维网也是一种分布式?对,万维网也是一种分布式系统。www提供了一个分布式的文档模型。所有的资 源最初在www上都是以文档的形式体现的,随后有了mime的支持,才把www上资源信息进行了极大的扩充。每个文档有且仅有一个唯一的标识符 (URL),用户根本不用关心这个文档所在的地理位置,效果上看似在同一个位置,其实有可能是相隔十万八千里。由一台台服务器把用户请求的文档中的所有资 源,汇总起来呈现给用户。典型的分布式系统。
二.分布式系统有什么用处?1.分布式系统能够使用户连接所需资源更加快捷;
分布式系统最重要的一个目的就是使用户能够方便的访问远程资源,并且以一种可控的方式与其他用户共享这些资源。
快捷性体现在服务器的地理分布、服务器的分布式计算、服务器的并发处理等等。采用以上方式能够使用户访问速度得到有效提升,但是其中还是会有些问题,下面将会说明。
可控性体现在需要有不同的域处理器来对用户的权限进行验证,然后通知其请求通过,以继续完成以后工作。(哈哈,这似乎不是分布式的概念)
2.分布式系统对于用户来说是透明的,这样能够方便的管理用户所需数据,处理好负载均衡;
分布式另一个目标是将它的进程和资源实际分布在多台计算机上这一事实隐藏起来。
这有什么好处呢?看下表,透明性的应用可以存在于一下的应用中。
访问 隐藏数据表示形式的不同以及资源访问方式的的不同;
位置 隐藏资源所在位置;
迁移 隐藏资源是否移动到另一位置;
重定位 隐藏资源是否在使用过程中移动到另一个位置;
复制 隐藏是否对资源进行复制;
并发 隐藏资源是否有若干相互的用户共享
故障 隐藏资源的故障和恢复
持久性 隐藏资源(软件)位于内存中还是硬盘中;
上表摘自:《分布式系统:原理与范型》通 过上面这张表已经足够说明透明的重要性了。不过有时候还需要考虑一个透明度的问题,并不是把所有的细节都给隐藏了就是好的。比如,有一个分布式存储的 mail系统,对于用户而言,他想制定上传服务器的位置,这在大多数情况下由系统选择最近的服务器是最优的,但是有这么一种情况就不行了:用户出差。这就 需要用户选择地域了。还有就是性能上的问题,需要对透明性有个折中。
3.更加的开放:具有相同的接口规范使得集群计算机能够方便的进行数据操作,系统协同度更高;
开放性体现在哪呢?
对外:体现在统一的接口描述上,用统一的接口描述语言描述一套所有服务器都知道的规则,这样各服务器的交互问题上没什么问题了。具体的接口实现根据各个服务器的情况具体实现,从而把实现和声明进行了有效的解耦。
对内:各台服务器内部的策略和实现也需要解耦,以免整个服务器是按照实现和声明逻辑实现的,但是服务器内部确实一个整体的,对于分布式的开放性将会大打折扣。
4.可扩展性:能够随着系统需求的不断增加翻遍的对系统进行扩展;
(1)系统的可扩展性可以通过三个方面来体现:在规模上、在地域上以及在管理上。这三个方面都会使系统的运行效率略有牺牲,但是这种牺牲对于分布式系统绝对是值得的,因为维护性远比那牺牲的一点效率来得更加经济有效。
可扩展性的几个问题:
规 模上:当需要支持更多的用户或资源时候就需要更大规模的系统,但是就会涉及是集中是服务还是分散(注意不是分布)。比如一个电信的用户收费系统,这绝对是 一个需要进行安全认证的系统,但是同时还需要考虑用户的规模问题。采用分散式的系统方便在规模上进行扩展,但是对于安全性来说则是存在很大问题的,不便于 安全的管理。
地域上:人们都知道局域网比广域网要快得多,也方便管理。但是,作为一个能够方便提供大规模用户数据的系统,广域上用户等待的连接时间会变长,不过为了能够系统应用的广泛性,这牺牲是可以的。
管理上:哈哈,问题多多,设计系统的时候这一部分最好不要设计成分布式的。
不要为了分布式而分布式,真正有需求才去应用是最好的。
(2)扩展技术有以下三种:以藏通信等待时间、分布技术以及复制技术。
隐 藏等待时间:采用异步的处理用户请求,这样可以使用户的阻塞时间变短,但不会提高返回速度。提高返回速度的方法有2中,cs之间的通信量减少,只在必要情 况下才与服务器通信,能够同时减少服务器和client的压力;预处理技术,即能够提前在客户端计算的数据最好在客户端计算,这样能够极大的减少服务器的 压力。
分布技术:别的不多说,DNS的网络拓扑结构就是一种很好的分布技术;
复制技术:给数据提供几个备份,以便其中一个出现错误的时候还能够使系统正常的进行计算。
三.分布式系统的硬件是什么样子的呢?
分布式的硬件分为多处理器系统和多计算机系统;
分享到:
相关推荐
全文分为两大部分,第一部分介绍了分布式系统的一些基本概念并框定了本文的问题模型和问题域,作为后续章节的基础。 第二部分介绍了一些分布式系统的理论,在介绍这些理论时,注重引入实例并加以应用,同时将这些...
《分布式系统原理与范型》作为一本系统介绍分布式系统基本原理与实践应用的书籍,涵盖了分布式系统设计与实现的核心理念。分布式系统指的是由多个可以独立运行的计算单元构成的系统,这些计算单元通过通信网络相互...
通过对分布式系统概念与设计的研究,我们可以了解到,分布式系统是一种复杂的系统,它由多个计算机节点组成,每个节点可以进行计算、存储和通信。这种系统可以提供高可用性、可扩展性和灵活性,广泛应用于各种领域,...
分布式系统是一种由多台计算机组成的网络系统,这些计算机在用户看来就像是一个单一的系统。它们通过网络互相通信和协调工作,以共同完成任务。分布式系统的设计和实现涉及许多核心概念和原则,例如透明性、开放性、...
分布式系统及应用是计算机科学中的一个关键领域,尤其在当今大数据和云计算的时代背景下,其重要性日益凸显。东北大学的研究生课程"分布式系统及应用"显然涵盖了这一领域的核心概念和实践技能。以下是对该课程相关...
分布式系统设计是现代互联网服务和企业级应用的核心技术之一,它涉及到多个计算机节点通过网络进行协同工作,共同处理任务和数据。在这个领域,我们需要深入理解并掌握一系列关键知识点,以构建高效、可扩展且容错的...
分布式系统原理与范型是计算机科学中的一个重要领域,它涵盖了多台计算机如何通过网络协同工作,以实现一个共同的目标。《分布式系统原理与范型(第二版)》这本书深入浅出地介绍了这一主题,旨在帮助读者理解分布式...
Java分布式系统架构是一种将应用程序分布在多个计算节点上运行的技术,以提高系统的可伸缩性、容错性和性能。源码分析对于理解这种架构至关重要,尤其是对于开发者来说,它提供了深入学习和自定义系统的机会。本资源...
分布式系统是一种由多个计算节点组成的系统,这些节点通过通信网络相互通信和协调,共同完成一系列计算任务。在分布式系统中,节点的划分通常是根据功能的不同来决定的,可以是物理上的多台计算机,也可以是单台...
分布式系统是一种由多台计算机通过网络互相连接,共同协作完成同一任务或多个相关任务的计算模式。这个系统中的每台计算机都可以称为一个节点,它们共享资源、协同工作,以达到提高系统性能、可扩展性和容错性的目的...
分布式系统原理与范型是IT领域中至关重要的一个主题,特别是在云计算、大数据处理以及现代互联网服务的背景下,理解和掌握分布式系统的概念与实践至关重要。本书作为第二版,深度探讨了这一领域的核心理论和常见模式...
分布式系统是计算机科学中的一个重要领域,它涉及到多个独立的计算节点通过网络进行协作,共同完成一个任务或提供服务。这份“分布式系统 概念与设计 习题答案(完整版)”涵盖了该领域的核心概念、设计原则以及常见...
分布式系统与并行计算是现代信息技术领域的核心研究方向,它们在处理大数据、提高计算效率以及实现高可用性方面发挥着重要作用。本文将对这两个主题进行深入探讨,特别关注Hadoop集群和MPI(Message Passing ...
第一部分详细讨论了分布式系统的原理、概念和技术,其中包括通信、进程、命名、同步、一致性和复制、容错以及安全。第二部分给出了一些实际的分布式系统:基于对象的分布式系统、分布式文件系统、基于文档的分布式...
分布式系统原理与范型是计算机科学领域的一个重要研究方向,它涉及如何构建和管理由多个独立计算机组成的系统,这些系统能够协调工作,对外表现得就像单一的、协调一致的系统一样。在分布式系统中,透明性、开放性、...
第一部分详细讨论了分布式系统的原理、概念和技术,其中包括通信、进程、命名、同步、一致性和复制、容错以及安全。第二部分给出了一些实际的分布式系统:基于对象的分布式系统、分布式文件系统、基于文档的分布式...