什么是分布式系统。lamport是这样定义的:“如果你从未听说过某台计算机的崩溃导致你什么也干不了,就说明你所打交道的是一个分布式系统”。更一般的定义是:分布式系统是若干独立计算机的组合,这些计算机对于用户来说就像是单个相关系统。
分布式最大的特点是向用户隐藏系统的内部组织结构,各种计算机之间的差别以及计算机之间的通信方式的差别都被隐藏掉。用户无论在何时何地都能够以一种一致的和统一的方式与分布式系统进行交互。
一个真正物有所值的分布式系统具备四个关键目标:
1、使资源可访问,这是分布式系统最主要的目标;
2、透明性。从定义中就可以看出,分布式系统需要将它的进程和资源实际上在多台计算机上分布这样一个事实隐藏起来。有很多种透明性:
2.a、访问透明性:对不同的数据表示形式以及资源访问方式的隐藏;
2.b、位置透明性:用户无法判别资源在系统中的物理位置,这是通过命名来实现的;
2.c、迁移透明性:资源的移动不会影响该资源的访问方式;
2.d、重定位透明性:资源在接受访问的同时进行重定位,而不引起用户和应用程序的注意;
2.e、复制透明性:对同一个资源存在多个副本这样一个事实的隐藏;
2.f、并发透明性:访问共享资源的时候,让任何一个用户都不会感觉到他人也在使用自己正使用的资源;
2.g、故障透明性:用户不会注意到某个资源无法正常工作,以及系统随后从故障中恢复的过程。
3、开放性。分布式系统根据一系列的准则提供服务,这些准则描述了所提供服务的语法和语义,对这些规则进行归纳总结,加以形式化,就形成了协议;
4、可扩展性。这包括规模上的扩展、地域上的扩展和管理的可扩展。
分布式系统的组织结构有很多种,一种重要的类型是机器分成了客户和服务器。客户-服务器体系结构经常是高度集中化的,在非集中化的体系结构中,组成分布式系统的进程起着相同的作用,这是一种点对点系统。
分布式系统需要重点在以下几个方面trade-off,围绕着分布式系统的关键目标进行设计,在解决分布式系统的设计问题时,时刻保持对目标的关注是有益的:
1、进程
2、通信
3、命名
4、同步
5、一致性和复制
6、容错性
7、安全性