Load Balancing

基于Shared Nothing Architecture做Load Balancing,遵循REST的无状态模型,不用考虑Sticky Sessions

一、DNS Load Balancing
DNS Load Balancing是最简单的方式,它将相同域名解析到不同IP
由于TTL和缓存时间,DNS不能实时更新clusters的更改
DNS方式很难自定义配置balance策略
DNS方式对traffic的balance不准确,对特定地域而言DNS会将特定域名一直路由到一个IP上
DNS方式很难搞redundancy和failover

二、用硬件做Load Balancing
Alteon AS range(application switches)
Citrix Netscalers
Cisco CSS range(content-switching servers)
Foundry Networks ServerIron
商用产品的缺点就是贵
相比DNS方式,用硬件产品做Load Balancing很好的支持failover

三、用软件做Load Balancing
Perlbal
Pound
Nginx
LVS
幸好有免费开源软件

四、Layer 4 Load Balancing
即在OSI7层模型的第4层搞Load Balancing,也就是在Transport这层
最简单的方式是使用Round robin算法来做Load Balancing,Load Balancer捕获请求并分发到backend server列表中的第一个server,并标记该Server为last used server,下次请求时则分发到下一个backend server

五、Layer 7 Load Balancing
在Application这层搞Load Balancing,将HTTP请求headers纳入balancing策略考虑
HTTP请求URL本身就是Layer 7 Load Balancing的例子
可以在real server cluster之上搞一个Hash table作为Layer 7 Load Balancing,访问某一特定的URL时分发到一个特定的real server,这样对该特定server可以每次都命中特定的缓存而不用在每个real server都建立同样的缓存
Layer 7 Load Balancing对HTTP请求的解析开销很大,所以它的scalability相对Layer 4 Load Balancing而言有限

六,Huge-Scale Balancing
超级大型的应用我们需要GSLB(global server load balancing)来将负载balance到不同的Data Center,将客户端路由到最近的DC以保持最少的latency
Akamai EdgePlatform提供整合的服务

七、Balancing非HTTP的Traffic
例如email,由于SMTP与HTTP很类似,我们可以使用HTTP Load Balancer来balance email traffic,只需创建一个新的service来监听25端口并连接到real backend servers

你可能感兴趣的:(nginx,算法,css,REST,Cisco)