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