网站如何做分布式

 
下面是我准备在 BOF 中抛砖引玉用到的砖:

网站如何做分布式(集群)的大纲
何时要用分布式
  • 单台服务器无法承受压力。
  • 需要实现发生错误时候,自动切换
  • 学习或者测试分布式技术
应用分布式的场景

一、提供多个对外的接口,按照一定规则,分派不同请求由不同接口来处理。
这时候需要考虑:
  • 如何实现负载均衡
    • 在哪个层次实现转移负载
    • 负载的均衡如何实现
  • 如何实现故障转移
    • 如何监控故障
    • 如何切换服务
二、把一个功能拆分成多个功能,不同功能分布部署到不同服务器上
  • 对外功能的拆分 
    • 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重定向
    •  
网站应用中的分布式
  • 代理服务器实现请求的分离
    • SquidLinux下一个缓存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 的在线用户数据,会是如何处理的呢?
从应用逻辑过程看是否支持分布式
  • 是否可以并行执行这个逻辑过程
    •  
  • 这个逻辑过程是否可以拆分成几个松耦合的过程
2006 9 19 17:01
引:要不是 TechEd ,还真不知道微软出了 Compute Cluster Pack 这么个东西。
微软在群集 / 分布式领域已经做了大量的工作,在 Windows 2000 发布时,它就已经支持了四种分布式模型,分别对应于不用的应用场合。他们是: Microsoft 群集服务( MSCS )、网络负载平衡( NLB )、组件负载平衡( CLB )和 Application Center 2000 。详情见: http://www.microsoft.com/china/technet/archives/columns/tips/w2kclust.asp
我对分布式计算一直比较有兴趣,今年在上海 TechEd 听了一个讲 Windows Compute Cluster Server CCS )的 Session ,才知道有这么个东西存在。 MSDN 上已经有下载了,发布日期是 2006/07/17 。但不知何故微软似乎没有怎么给这个产品作市场宣传嗯。
我在 TechEd 会后和微软的工作人员(来自开发团队)小聊了一会儿,得知这个产品最佳的应用领域在于那些 “Task 的数量很少,但每个 Task 都需要很长时间计算 的问题,比如 Pi 的计算。实际上这个产品是为科学计算准备的,比如气象模拟、地质勘探等领域。
CCS 基于 MPI 2.0标准 ,所以它可以和其他基于 MPI 2.0 栈的服务器协同工作。 CCS 目前可以安装在 Windows Server 2003/R2 64bit 版本上。 32-bit 对于高性能计算( HPC )可能确实字长太短了,所以微软的方案也根本没有打算支持。
这里有个从微软网站 copy 过来的 table ,我在最右边加了一列,来描述 CCS 和它们的不同之处:
 
MSCS
NLB
CLB
Application Center
CCS
用途
应用程序故障恢复与故障返回
IP 通信负载平衡
COM+ 对象负载平衡
创建并管理 Web
高性能计算
High Performance Computing/HPC
优势
可用性与可管理能力
可用性与可伸缩性
可用性与可伸缩性
可用性、可伸缩性与可管理能力
可伸缩性与可管理能力
每个群集中的最大节点数量
2 个(针对 Win2k AS )或 4 个(针对 Datacenter
32
16
16
无限制
群集类型
共享存储机制
无共享资源
无共享资源
无共享资源
N/A
状态信息
有状态
无状态(如果需要的话,可以支持有状态连接)
无状态
无状态
N/A
是否需要对服务器应用程序进行修改
需要
不需要
不需要
不需要
需要(使用 MPI 2.0 库,只支持 Fortran77 Fortran90 C 语言)
是否需要使用专用硬件设备
需要
不需要
不需要
不需要
64-bit CPU from Intel or AMD ...
是否独立
否(需要使用 AppCenter
否(需要使用 Compute Cluster Pack
分布式计算可以让你的程序或者服务拥有更好的可靠性,或更高的可伸缩性。 CCS 是为性能而生的产品,它可以以高度 scalable 的方式增强群集的性能。微软在多 CPU/ 多核方面已经提供了对了 SMP 的支持(通过 VC2005 OpenMP 2.0 支持  — 同时支持 Managed Unmanaged 代码!),在多机并行运算方面又实现了 MPI 2.0 ,它的计算机群集方面的产品线应该已经相当完善了。
以上信息来自网上资料汇总(大部分来自官方),有不对之处请指正。
 
 
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值