分布式系统和软件利用计算机网络:网络提供部分基础结构,供分布式系统在其上执行,此外,计算机网络对于用户而言就是一组能够互相通信的计算设备。分布式系统通常提供一致的接口,使得用户将一组计算设备看作是单个的统一实体。
分布式处理系统有三项基本的特点:
- 并发: 在实际的分布式系统当中,多个线程同时运行。并发的复杂性在于处理对资源共享访问,
- 在时间上同步:在实际的分布式程序当中,组件和线程通常必须同步协调它们的活动。在分布式系统中,处理时间问题非常的关键。
- 失效:依赖于多个独立组件的分布式系统当中,不幸的事实是这些组件会出现失效(例如:软件中的错误、硬件的故障、外界的错误输入都可以倒置出现失效),而且,整个系统中对这些组件如何以及何时会失效几乎都没有控制。因此,分布式系统的设计者的责任是预见组件会失效,并纠正整个系统中的潜在失效。
模型
- 客户-服务器模型
- 对等模型:本质上是一般化的C/S模型,只不过在这种分布式系统中,所有的组件是同时充当客户机和服务器的,组件按照特殊的方式进行连接来共享信息。在纯对等分布式系统当中,通常没有中央服务器,但是这些系统的一些变体会提供相对应的结构,例如允许某些组件负责管理来自其他组件的信息。对等分布式系统的例子有Usenet、基于BitTorrent协议的应用和用于生物信息应用的文件共享网络。
- 事务处理模型:经常使用于需要使用数据库来维护信息,使得信息处于一致状态。在这种模型下,对数据库应用的操作是单独的和不可分割的;在执行时,这些操作不能够被中断,并运行至结束,除非发生错误。换句话说,事务要么运行至结束并成功,要么作为一个完整的单元失效。通常会回滚事务,甚至可能会记录事务以防突然出现变故。
创建分布式系统面临的挑战
- 异构性:分布式系统的各个部分通常具有不同的类型和种类(硬件,语言,标准...),有很多的技术用来确保异构性不会出现问题,而且尤其时采用公认的标准。
- 安全性:分布式系统使用和传递的信息需要受到安全性的约束,而且必须符合这些要求。
- 可伸缩性:对于一个可伸缩的系统而言,即使试图访问其资源的用户数量大量的增加,也能够给出有用的结果。可伸缩性的一个重要方面是确保资源没有用尽并避免性能瓶颈。
- 自动故障防护: 对于一个分布式系统而言,如果系统中的一个或者是多个组件出现故障时,还能够继续提供服务,那么这个系统就具有自动故障防护性能。由于分布式系统中的故障是部件性的,处理起来不容易。需要先检测故障,然后进行减缓,例如,通过启用新的组件,或者是将服务请求转到其他的组件。
- 透明性(即隐藏信息):分布式系统可以是很复杂的,但复杂性对于用户来说是隐藏的。
- 扩展性
第二章 : 并发的概念
并发系统有一个特别有意思的方面是定时处理。如果一个系统具有许多需要使用硬性时限才能够满足的同步要求,就可以将系统作为并发系统实现。