分布式应用系统概念
分布式系统已经无处不在
分布式系统渗透到包括金融与商业、信息社会、创意产业和娱乐、医疗保健、教育、交通与物流、科学、环境管理等行业中。
其中,三个典型的案例可以让我们了解到它的存在性和重要性:Web搜索、大型多人在线游戏、金融交易。
Web搜索
Web搜索引擎的任务是为万维网的所有内容建立索引,其中包含上千亿的页面、上万亿的Web地址。google,它代表了计算历史上最大和最复杂的分布式系统之一。最近的数字表明Google一个月的搜索量已经超过1000亿。其中代表性三大论文是整个业界学习的典范。
大型多人在线游戏
它提供一种身临其境的感觉,博主一直认为游戏是最高端软件,也是入行的第一个动力。想想超大数量的用户通过互联网在一个持久的虚拟世界中交互,是一件多么神奇的事情。
金融交易
金融行业一直以其需求处在分布式系统技术的前沿。特别是在实时需求的领域上。它通常再用分布式基于时间的系统。其中,感兴趣数据项被称为事件,而需求就是可靠和及时的传递事件给大量对此信息感兴趣的用户。
分布式系统的挑战
异构性
网络、计算机硬件、操作系统、编程语言、由不同的开发者完成的软件实现都是造成异构性的主因。其中网络的异构通过互联网协议相互通信而被屏蔽;中间件的流行屏蔽的底层网络、硬件、操作系统和编程语言的异构,它为分布式应用和服务器提供了一直的计算模型,包括RPC、远程事件通知、远程SQL访问和分布式事物调用;虚拟机也是使代码到处运行的一种方法。
开放性
它取决于新的资源共享服务能被增加和供多种客户程序使用的程度。特征就是发布系统的关键接口,使其基于一致的通信机制,让不同提供商提供异构硬件和软件。
安全性
包括三个部分:机密性(防止泄露给未授权的个人)、完整性(防止被改变或被破坏)、可用性(防止对访问资源的手段的干扰)。其中有两个重要的安全问题:拒绝服务攻击和移动代码的安全性仍然没有得到圆满解决。
可伸缩性
顾名思义就是随着资源数量的增加和用户访问的增加,系统仍然能保持其有效性,该系统就被称为可伸缩的。其中有控制物理资源的开销、控制性能损失、防止软件资源用尽和避免性能瓶颈四大挑战。
故障处理
在一个分布式系统中,硬件或软件都会出现未知的故障或者不正常运行,因此故障处理是贯穿整个系统的难题。容错(设计容错机制如重传)、故障恢复(数据恢复或“回滚”保证一致性)、冗余(多条路由或者备份等技术)都是故障处理技术。
并发性
多个用户对同一资源的使用,要保持操作的正确性就必须在数据保持一致的基础上同步。如使用操作系统的信号量。
透明性
- 访问透明性:用相同的操作访问本地资源和远程资源(电子邮件)
- 位置透明性:不需要知道资源的物理位置或网络位置(电子邮件、URL)
- 并发透明性:几个进程能并发的使用共享资源而不互相干扰
- 复制透明性:使用资源的多个实例提升可靠性和性能,而用户和程序员无需知道副本的相关信息
- 故障透明性:屏蔽错误
- 移动透明性:资源和客户能够在系统内移动而不受影响(移动电话)
- 性能透明性:负载变化时,系统能够被重新配置以提高性能
- 伸缩透明性:系统和应用能够进行扩展而不改变系统结构和应用算法
- 服务质量。影响客户和用户体验的服务质量是可靠性、安全性和性能。
这些概念虽然很抽象,且看似简单,但如果能够正确而深入的理解,将受益很多。