分布式系统简介

  研究生阶段学习的分布式原理与泛型几乎忘完了,当初不怎么懂。。。现在工作中发现大数据技术的底层还是分布式系统,那么重新拾起,总结下~

一、分布式系统简介

  分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统。这个定义包含了两方面的内容,第一方面是硬件的:机器本身是独立的。第二方面是软件的:对用户来说他们就像在于单个系统打交道

  其中重要特性之一是,各个计算机之间的差别以及计算机之间的通信方式的差别对用户是隐藏的。另一个重要的特性是,用户和应用程序无论在何时何地都能够以一种一致和统一的方式与分布式系统进行交互

  为了使种类各异的计算机和网络都呈现为单个系统,分布式系统通常通过一个“软件层”组织起来,该“软件层”在逻辑上位于由用户和应用程序组成的高层与和操作系统组成的底层之间。这样的分布式系统有时又称为中间件

二、目标

1、使资源可访问

  分布式系统的最主要的目标是,使用户能够方便地访问远程资源,并以一种受控的方式与其他用户共享这些资源。

2、透明性

  将它的进程和资源实际上在多台计算机上分布这样一个事实隐藏起来,如果一个分布式系统能够在用户和应用程序面前呈现为单个计算机系统,这样的分布式系统就称为是透明的。

  访问透明性:对不同数据表示形式以及资源访问方式的隐藏。

  位置透明性:用户无法判别资源在系统中的物理位置。

  迁移透明性:如果一个分布式系统中的资源移动不会影响该资源的访问方式,就可以说这种分布式系统能够提供迁移透明性。

  重定位透明性:如果资源可以在接受访问的同时进行重新定位,而不引起用户和应用程序的注意,拥有这种资源的系统无疑会更加强壮。

  复制透明性:对同一个资源存在多个副本这样一个事实的隐藏。

  并发透明性:让任何一个用户都不会感觉到他人也在使用自己所使用的资源。

  故障透明性:意味着用户不会注意到某个资源无法正常工作,以及系统随后从故障中恢复的过程。

3、开放性

  分布式系统还有一个重要目标。一个开放的分布式系统,它根据一系列准则来提供服务,这些准则描述了所提供服务的语法和语义。例如,在计算机网络中,其准则规定了发送和接收的消息的格式、内容及含义。对这些准则进行形式化,就产生了协议。在分布式系统中,服务通常是通过接口指定的,而接口一般是通过接口定义语言来描述的。

  互操作性:刻画了来自不同厂商的系统或组件的两种实现能够在何种程度上共存并且协同工作,这种共存和协同工作只能依赖与通过双方在公共标准中规定的各自所提供的服务来完成。

  可移植性:如果为分布式系统A开发了某个应用程序,并且另一个分布式系统B与A具有相同的接口,该应用程序在不做任何修改的情况下在B上执行的可行度。

4、可扩展性问题

  地域上的可扩展性问题,难以对现有的为局域网设计的分布式系统进行扩展的主要原因之一是这些系统基于同步通信。请求服务的以防(一般称为客户)在得到回应前是处于阻塞状态的。这种方法通常适用于局域网,而在广域系统中,必须考虑到进程间通信可能要比局域网慢三个数量级。

  而且,广域网中的通信从本质上说是不可靠的,而且几乎总是点对点的,相比之下,局域网一般提供高度可靠的基于广播的通信功能,使得在给予开发分布式系统要相对容易得多。 例如:服务器定位的问题,在局域网系统中,进程可以简单地向每台计算机广播一条消息,寻味每台计算机是否正运行该进程所需的服务。提供该服务的机器会做出相应,在应答消息中包含该机器的网络地址。

5、扩展技术

  基本上只有三种拓展技术:隐藏通信等待时间、分布技术 以及 复制技术

  隐藏通信时间的技术对于地域扩展比较适用。其基本的想法在于尽量避免等待远程服务队请求的相应。例如:当对远程计算机的某个服务发送请求时,在发出请求端,除了等待服务器响应之外,还可以利用这段时间做其他工作。本质上,以这种方式构建的应用程序使用的是异步通信。 那么当相应到来时,应用程序产生中断,并且调用专门的处理程序对前面发出的请求进行处理。异步通信通常用于批处理系统以及并行应用系统中。另外一种选择是,启动一个新的控制线程来执行请求,虽然该控制线程因为等待响应而受到阻塞,但是进程中的其他线程可以继续执行。

  分布技术,把某个组件分割成多个部分,然后再将它们分散到各个系统中去,使用分布技术的一个例子是因特网DNS。DNS命名空间是由 域 组成的分层树状结构,域又划分为互不重叠的区。每个区内的名字都由单个域名服务器处理。在不涉及太多细节的情况下,可以把每个路径名想象成因特网上的主机名,与该主机的网络地址相关。从根本上来说,解析一个名字意味着返回与该名字相关联的主机的网络地址。

  

  另外一个例子,万维网(WWW),对于大多数用户来说,Web呈现给他们的是一个庞大的基于文档的信息系统,其中的每个文档都拥有以URL形式给出的唯一名字。Web在物理上是分布到非常多的服务器上的,每台服务器处理一部分Web文档。通过编码,把处理文档的服务器的名字变成该文档的URL中的一部分。正是因为对文档进行了分布处理,Web才得到扩展到现在的规模。

  考虑到可扩展性,对文件进行复制并将副本分不到系统各处,不仅能够增加可用性,也有助于各组件间的负载均衡,从而使性能得到提高。

  缓存是复制的一种特殊形式,与复制不同的是,是否进行缓存是由要访问资源的客户决定的,而不是由资源拥有者决定的。 不过不论是缓存还是复制,由于资源存在多个副本,修改其中一个会导致它与其他副本不相同,从而导致一致性方面的问题。

6、分布式系统的类型

  集群计算系统:通过在高速网络上挂接相对简单的计算机集,就可以构建成一个超级计算机,集群计算系统都可用于并行程序设计,即单个程序可以在多台计算机上并行地运行。主节点实际上运行的是程序运行和集群管理所需的中间件,而计算节点往往只需要一个标准的操作系统。

  网格计算系统:集群中的计算机都是相同的,它们都具有相同的操作系统,都通过同一网络连接起来。而网格计算系统则具有高度的异构性:其硬件、操作系统、网络、管理域和安全策略等都不尽相同。那么如何把不同计算机组织的资源集中起来,使一组人或机构进行协调工作,这种协调是以虚拟组织的方式来实现的。网格计算的分层体系结构如下:

  该体系结构由4层组成。

  最低的光线层:在特定站点提供对局部资源的接口,此为定制化接口,以允许在某个虚拟组织中实现资源共享。通常,他们还提供查询资源状态和容量功能,以及用于进行实际的资源管理(如加锁资源)的功能。

  连接层:由通信协议组成,用于支持网格事物处理,衍生多个资源的使用。

  资源层:负责管理单个资源,直接调用光线层可用的接口,如生成一个进程或读取数据等。因此,资源层可以看做是负责访问控制,因而依赖于连接层的认证功能。

  汇集层:该层负责处理对多个资源的访问,通常由资源分派、把任务分配和调度到多个资源以及数据复制等服务组成。

  应用层:由应用程序组成,这些应用程序在虚拟组织中运行,它们可以充分利用网格计算环境。

参考文献:《分布式系统原理与泛型》

时间: 2024-10-20 23:07:10

分布式系统简介的相关文章

分布式系统基础

一.分布式系统简介 1.定义 系统的各组件分布于网络上多个计算机,各组件彼此直接仅仅通过消息传递来通信并卸掉行动 2.分布式系统存在的意义  1)单机向上扩展的性价比越来越低 2)单机扩展存在性能上升临界点 3)出于稳定性及可用性考虑,单机会存在多方面的问题 3.多线程编程模型 互不通信的多线模式 基于共享容器协同的多线程模式 通过事件协同的多线程模型 4.网络IO 多进程:每个进程响应一个请求 多线程:每个进程生成多个线程,每线程响应一个请求 或者每线程直接响应多个请求 5.基于socket实

Google资深工程师深度讲解Go语言

第1章 课程介绍   1-1 课程导读   1-2 安装与环境第2章 基础语法   2-1 变量定义   2-2 内建变量类型   2-3 常量与枚举   2-4 条件语句   2-5 循环   2-6 函数   2-7 指针第3章 内建容器   3-1 数组   3-2 切片的概念   3-3 切片的操作   3-4 Map   3-5 Map例题   3-6 字符和字符串处理   第4章 面向"对象"   4-1 结构体和方法   4-2 包和封装   4-3 扩展已有类型   4

分布式系统及NoSQLl简介

分布式系统及NoSQL简介 ============================================================================== 数据存储  1.数据存储 ★数据模型: 层次模型: 网状模型: 关系模型: 对象关系模型 ☉关系模型: 关系型数据,严格的schema: ACID规则 分布式系统  1.介绍 ★分布式系统: 分布式系统(distributed system)由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成.

分布式系统的发展演变以及RPC简介

场景 什么是分布式系统 分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统. 分布式系统是建立在网络之上的软件系统. 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.此时,用于简化增删改查工作量的数据访问框架(ORM)是关键. 单一应用结构特点 适用于小型网站,

kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)

问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状态信息是如何保存的? 4.partitions设计的目的的根本原因是什么? 一.入门 1.简介 Kafka is a distributed,partitioned,replicated commit logservice.它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现.k

开源GIS简介

原文 开源GIS C++开源GIS中间件类库: GDAL(栅格)/OGR(矢量)提供了类型丰富的读写支持 GEOS(Geometry Engine Open Source)是基于C++的空间拓扑分析实现类库,遵循LGPL协议发布.GEOS类库提供了丰富的空间拓扑操作函数,用以判断几何对象间的相互关系,以及空间分析操作之后形成新的几何对象.点.线.面要素的两两相互关系,包括相合.分离.相交.重合.包含.相邻等不同位置关系,都可以通过GEOS类库中提供的函数进行分析和判断.并且GEOS类库提供了缓冲

分布式系统基础设施

一.分布式系统基础设施简介 1.分布式协作及配置管理系统ZooKeeper 2.分布式缓存系统 分布式缓存主要用于高并发环境下,减轻数据库的压力,提高系统的响应速度和并发吞吐.当大量的读.写请求涌向数据库时,磁盘的处理速度与内存显然不在 一个量级,因此,在数据库之前加一层缓存,能够显著提高系统的响应速度,并降低数据库的压力. 3.持久化存储      常见的分布式系统存储解决方案,包括MySQL的分布式扩展.HBase的API及使用场景.Redis的使用等. 4.分布式消息系统      在分布

HTTP的REST服务简介

REST简介 一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. 在您将看到的这一篇文章中,我们将对REST,尤其是基于HTTP的REST服务进行详细地介绍.通过这些文章,您不仅可以了解到什么是REST,更能清晰地了解到您在编写REST服务时所需要遵守的各个守则,设计RESTful API时需要考虑的各种因素以及实现过程中可能遇到的问题等内容. R

Hadoop入门一:Hadoop简介

  从数据爆炸开始...  1.1 第三次工业革命 第一次:18世纪60年代,手工工厂向机器大生产过渡,以蒸汽机的发明和使用为标志. 第二次:19世纪70年代,各种新技术新发明不断被应用于工业生产,以电力的发明使用为标志. 第三次:20世界四五十年代末,以高新技术为代表的新科学技术革命,以原子能.航天技术和电子计算机 为标志. 1.2 信息技术发展带来的数据爆炸 纽约证券所交易    每天 1TB FaceBook一千亿照片  1PB 腾讯 每天 300TB 淘宝 每天 pv20亿 数据量 50