分布式系统原理与应用复习

1 分布式系统简介

1.1 分布式系统定义

产生背景:应用驱动+技术支撑
分布式系统优点:支持业务固有的分布性、经济性、性能提升、可靠性提升
定义:分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统。硬件角度:各个计算机是自治的,通过网络互联;软件角度:用户看到一台逻辑计算机。(互联、协作、单一视图)

1.2 分布式系统目标

(1)使远程资源可访问
分布式系统的最主要目标是使用户能够方便地访问远程资源,并且以一种受控的方式与其他用户共享这些资源。
(2)透明性:隐藏进程和资源分布在多台计算机上的事实。
透明性的程度和具体应用相关,同时还要考虑性能问题( 副本能提高性能,但保持副本的一致性需要进行更新传播 )。透明性是要牺牲一些效率来达到的。具体透明性如下:
透明性的说明
(3)开放性
根据一系列准则来提供服务,这些准则描述了所提供服务的语法和语义。分布式系统中服务通常通过接口来提供 ,而接口一般通过接口定义语言来描述
(4)可扩展性
规模扩展:方便的增加资源和用户(限制:集中的服务、数据及算法)
地域扩展:用户和资源相隔距离(限制:通信延迟、不可靠通信)
管理扩展:能跨越多个独立的管理机构(限制:安全问题、收费问题)
解决扩展性的技术
a.隐藏通信延迟
采用异步通信方式,避免等待响应
采用多线程技术,提高并发
减少通信量,胖客户端
b.分布:DNS,WWW分布式web项目
c.复制技术:扩展通常会导致性能的下降,复制能增加可用性,提高性能,利于负载均衡,但存在一致性问题。-复制也可隐藏通信时间

1.3 常见分布式系统类型

(1)分布式计算系统:用于高性能计算任务
①集群计算系统
底层硬件由类似的工作站或者PC集组成,通过高速局域网紧密相连,每个结点运行相同的操作系统(具有同构性)
②网格计算系统
异构的(硬件、操作系统、网络等都不尽相同)系统,把不同计算机的资源集中起来,进行协调工作
(2)分布式信息系统:适用于大型企业或者组织对信息进行管理和事务处理,解决大型企业或组织对大量网络应用、信息的集成和管理。
①事务处理系统(分布式数据库应用)
用户看到的是一个完整的数据库,但是数据实际是分布在多个计算机结点上,事务处理系统能提供有效的存取手段来对数据进行处理。事务处理的特征是所有操作要么被完全执行,要么不执行。
②企业应用集成:将各个应用集成起来,应用之间可以直接交换信息。
(3)分布式普适系统:移动和嵌入式设备加入到系统中,以便访问信息
①智能家居系统:把家庭中的设备集成为单个系统,能够进行自我配置和
自我管理
②电子健保系统:用于日常监视个人健康程度,在需要的时候与医生联系

2 分布式系统体系结构

2.1 体系结构样式

软件体系结构: 软件的组件,以及组件之间的相互关系。
要素:组件-模块单元,具有良好的接口
链接器-实现组件间通信的机制
软件体系结构样式:如何表示一个软件体系结构
常见的体系结构样式 :

  • 分层体系结构:系统由不同层的组件组成,只有相邻层可以通信 ,请求消息自上 而下,响应消息自下而上
  • 基于对象的体系结构 :每个组件对应一个对象; RMI 通信
  • 以数据为中心的体系结构:组件间通过一个公用的存储实现通信
  • 基于事件的体系结构 :通过事件的传播实现组件间的通信

2.2 系统体系结构

软件体系结构的具体实例 :集中式体系结构(客户/服务器模型–CS)、非集中式体系结构(点对点系统—P2P)、混合体系结构

2.2.1 集中式体系结构

客户 / 服务器模型
Server :服务器是实现特定服务的进程
Client :是通过往服务器发送请求来请求服务,然后等待服务器回复的进程
请求 / 答复模式:Client和Server分别扮演服务请求者和服务提供者。服务器监听请求,客户提出请求、接收响应;服务器等待请求,客户等待响应。
应用分层(逻辑三层):用户接口层、处理层、数据层
多层体系结构

  • 物理两层体系结构:
    逻辑上三层部署在物理上的两层上
    (1)客户机,只含有实现(部分)用户接口的程序
    (2)服务器,包含了其余的部分,即实现处理和数据层的程序

  • 物理三层体系结构:
    服务器有时会担任客户机的角色;用户接口、应用程序服务器、数据库服务器
    多层是按纵向划分,也可以按横向划分:垂直分布(不同功能的分布)、水平分布(相同功能的复制)
    c/s 适合集中式网络服务

2.2.2 非集中式体系结构

点对点系统(P2P):网络上的所有节点都可以“平等”共享其他节点的计算资源,所有网络节点上的设备都可以建立P2P对话。(既可以是客户也可以是服务器))
P2P适合分散式服务,如即时通信、点对点文件传输、视频会议等(eg.napster )
结构化的点对点体系结构
逻辑上的结构,方便快速查找,eg. Chord系统-基于Hash运算,CAN上下文可编址网络-基于虚拟的 d 维笛卡尔坐标
非结构化的点对点体系结构
每个节点维护一个邻节点列表,泛洪查找–>改进:超级对等体(维护索引或充当代理)

2.2.3 混合体系结构

将集中式和非集中式体系结构组合,eg.BitTorrent 系统,其目录的存储是集中的,但文件系统是分散的

2.3 中间件

中间件在应用程序和底层操作系统之间,其目的是要提供分布式透明性
中间件如何不同应用程序的需求:

  • 针对不同的应用实现多个中间件版本
  • 按照应用程序的需要来配置、适应中间件系统

拦截器:可中断正常执行的控制流,插入执行其他代码

  • 请求级拦截器
  • 消息级拦截器

3 进程

3.1 进程和线程

进程----- 程序的一次执行过程;资源分配的最小单位;
线程-----CPU分配的单位;程序执行的最小单位,资源调度的最小单位
为什么引入线程的: 提高并发程度, 适合多核, 通信代价小
(1)不必使进程因等待某事件而阻塞,提高了进程的执行效率;
(2)多处理/多核上可使线程并行执行;
(3)IPC需要内核干预,上下文切换代价高,线程可通过数据共享实现;
(4)软件工程的需要,有些应用程序需要一组相互协作的任务完成。
线程的实现以线程包的形式提供,分为:

  • user-level线程库;上下文切换代价小,但容易造成整个进程的阻塞。
  • kernel-level线程库;不会导致进程的阻塞,但上下文切换代价高。
    为此采用混合方式,通过 LWP 进行线程管理(结合kernel-level lightweight processes和user-level threads)。
    多核处理器的三种实现方案 : 1) 共享缓存方案 ; 2) 共享 IO 接口方案 ; 3) 共享数据包方案 ;
    多线程之间的合作方式:(a)派遣者 / 工作者模式 (b) 团队模式 © 管道模式
    在分布式系统中,线程可用于开发高效率的客户端和服务器.

3. 2虚拟化

定义:将一台计算机虚拟为多台逻辑上的计算机
原因:

  • 高层软件跟不上底层硬件的更新
  • 可移植和灵活性

虚拟机体系结构
计算机系统提供了不同层次的接口以实现不同的虚拟化技术,如下图
在这里插入图片描述
①由机器指令组成的硬件和软件之间的接口

  • 任何程序都能调(General instructions)
  • 只有特权程序才能调用(Privileged instructions)
    ②由操作系统提供的系统调用(System calls)组成的接口
    ③由库函数组成的接口(Library functions),通常形成了应用程序编程接口(API)

虚拟化可采用两种方式
①进程虚拟机-Runtime System,提供一套抽象指令集来执行程序,如 JVM,在操作系统和应用层之间
②虚拟机监视器VMM-系统屏蔽硬件同时提供机器指令接口,可以有多个不同的操作系统独立并发地运行在同一平台,如VMWare,硬件和操作系统之间

3.3 c/s模型

client:

  • 提供用户接口
  • 和服务器进行交互
  • 执行部分处理工作(ATM 机,机顶盒,条码阅读器等)
  • 提供分布式透明性(Client-side solution)

server:
(1)工作方式
等待来自客户的请求,随后处理该请求,返回处理结果,并等待下一个客户请求。
(2)组织结构
迭代服务器(Iterative server):自己处理请求,并将响应返回给发出请求的客户。
并发服务器(Concurrent server):自己不处理请求,将请求传递给某个独立线程或者其他进程来处理,自己立即返回并等待下一个输入的请求。
(3)端口访问
客户如何访问服务器?服务器在端口监听客户的请求。
客户如何知道服务器的端口?为已知的服务分配特定端口,如Http是80端口,FTP是21端口;动态分配
客户端到服务器的绑定:

  • 使用daemon(守护程序,查找end-point table)
  • 使用superserver(create server)

(4)中断服务

  • 退出客户应用程序
  • 利用带外数据:带外数据是服务器在处理客户发送的其他所有数据之前必须处理的数据。

(5)状态

  • 状态无关服务器(Stateless server):服务器不保存其客户的状态信息,也不把自身的状态变化告知任何客户(例如:Web服务器)
  • 状态相关服务器(Stateful server):服务器端保存每次通信的信息(例如:文件服务器)

(6) 服务器集群
一组经网络相连的机器,每台机器运行一 个或多个服务器,实现分布式计算 ,逻辑上分三层
1 、存储器、交换机,分配客户请求给服务器
2 、存储器、应用或计算服务器,提供计算或相应处理
3 、存储器、文件或数据库服务器,完成数据处理服务
不同服务运行在不同的机器上,交换机需要区分不同的请求,转发到合适的服务器,可能导致负载不均(代码迁移, 负载均衡算法
分布式透明性(单点访问, TCP handoff)

3.4 代码迁移(migration)

为什么要进行代码迁移

  • 性能提升:从负载重的机器迁移到负载轻的机器;把客户端的部分迁移到服务器;把服务器的部分代码迁移到客户端
  • 灵活性 客户绑定到服务器时,可以动态下载代码

代码迁移模型:
一个进程包括:代码段,资源段,执行段(包括当前进程的状态)
移动的强弱:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值