您的位置:首页 > 其它

分布式(集群)的基本概念以及分布式的应用场景【转】

2011-09-30 12:36 495 查看
概念
分布式是指将不同的业务分布在不同的地方。

而集群指的是将几台服务器集中在一起,实现同一业务。

分布式中的每一个节点,都可以做集群。

而集群并不一定就是分布式的。

就比如新浪网,访问的人多了,他可以做一个群集,
前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。

而分布式,从窄意上理解,也跟集群差不多,
但是个人觉得,它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。
分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。

何时要用分布式

单台服务器无法承受压力。

需要实现发生错误时候,自动切换

学习或者测试分布式技术

应用分布式的场景

一、提供多个对外的接口,按照一定规则,分派不同请求由不同接口来处理。
这时候需要考虑:

如何实现负载均衡

在哪个层次实现转移负载

负载的均衡如何实现

如何实现故障转移

如何监控故障

如何切换服务

二、把一个功能拆分成多个功能,不同功能分布部署到不同服务器上

对外功能的拆分
http://news.sina.com.cn/ http://sports.sina.com.cn/ http://mobile.sina.com.cn/ http://www.microsoft.com/china/ http://www.microsoft.com/downloads/
SOA

n层架构,其中的一些层分布到不同服务器上

WEB + DB 模式

网站请求中的分布式

按照请求流程,我们可以在以下环节按照一定规则,把用户的请求分流到不同服务器上:

Web Client Level

例子:QQ 设置中你可以选择登陆的服务器IP

DNS Based Selection

优点:

缺点:

不能区分服务器的差异,也不能反映服务器的当前运行状态。

DNS 的刷新需要时间,无法及时故障切换。

TCP balancing proxies

硬件

软件

HTTP-aware routers

URL重定向

网站应用中的分布式

代理服务器实现请求的分离

Squid是Linux下一个缓存Internet数据的代理服务器软件

拆分网站对外功能

不同域名前、后缀

URL 重写

SOA

每个Service 分布到一台服务器上

n 层架构

缓存分布式部署

文件Cache

内存Cache (memcached )
http://www.danga.com/memcached/ https://sourceforge.net/projects/memcacheddotnet/
DB分布式集群部署

故障转移

发布订阅

分布式分区视图

应用服务器(比如定时发送邮件通知的服务)

相关技术:

企业服务

.net Remoting

WCF

Web Service

如何判断一个应用是否支持分布式

如果发现某一部分应用需要做分布式了,就可以按照以下思路来考虑如何改造:

从应用所用数据看是否支持分布式

多份并存数据(一个数据存在多份)最大多长时间同步一次是可接受的。

内存缓存的数据跟数据库的数据(页面级缓存和业务逻辑缓存)

静态文件跟数据库

查询数据库跟业务变更数据库

数据按照一定规则拆分(一个数据只存在一份)对业务是否有影响

过去每年的数据迁移到一个对应历史库中。

专用的图片服务器 http://pics.ebaystatic.com/
此处可分析:QQ的在线用户数据,会是如何处理的呢?

从应用逻辑过程看是否支持分布式

是否可以并行执行这个逻辑过程

这个逻辑过程是否可以拆分成几个松耦合的过程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: