系统伸缩性问题表现在网络和服务器的容量和性能问题,原则上讲只存在三种伸缩技术:隐藏通信延迟,分布和复制。
隐藏通信延迟:主要针对的是地理的伸缩性问题。它的基本思路很简单:尽可能避免等待远程服务的回复。从本质上来讲,这就要求我们尽可能的采用异步通信的方式来构成服务请求的应用,在服务回复到达的时候,用户可以继续服务请求的处理。
分布:涉及到将一个较大的组件分解成更小的部分,然后将它们部署在整个系统上(而不是一台机器上)。由于组件分布在不同的机器上面,不可避免的带来了网络损耗。
复制:不仅可以提供系统的可用性,而且可以帮助我们在组件之间实现采用负载均衡而使系统达到更好的性能。同事,对于地理位置比较分散的分布式应用,一个较近的资源就可以隐藏通信延迟。缓存是一种特殊形式的复制,是对资源做的一个拷贝。复制天然的会来一个数据不一致的问题,这是有数据的多点分布这个特性带来的
从上面三个基本点来说,分布式系统本身就是一种折中的方案,对于CAP定理,从本质就决定我们不可能同时满足所有的客观要求。针对上面的三种基本技术,一般来说一个分布式系统的分析和设计就必须解决下面的7个子问题:
(1)高级通信问题。计算机网络通信的模型本质上计算机之间的消息传递。
(2)进程和代码的分布。将应用系统的代码处理和进程进行分布构成分布的最基本的思想。最近的研究集中在代码在分布环境下的迁移和基于主体的应用。
(3)资源的命名服务。在大规模分布的环境中,资源的命名和管理是一个关键的问题。如何采用一致的方式进行资源的命名,资源的访问和资源的配置就构成了命名服务研究的主要问题。
(4)分布式事务处理。
(5)复制与一致性问题。
(6)分布式容错系统。
(7)分布式安全设计。