通过首页进行重定向进行负载均衡的弊端:1:用户访问的深度是无法预测的,这会让负载并不那么均衡;2:用户可能会保存某个实际服务器的网址,这以后就难以进行更改和控制了。
通过首页进行重定向的方法可以是IP的散列,或者是随机。对于一次性下载服务,这样的方式看起来似乎不错,但可能存在用户下1个G的东西,但只下了1k就中断了,你以为这台服务器是很忙的,其实不然。一种好的方法是采用负载反馈,定时获取各服务器的实时流量。
反向代理:可以使用ip进行不同的散列,或者写入cookie,后者可以更好地应付多个用户使用同一个IP访问的情况。为什么要让同个用户访问同一台服务器呢?session的考虑,还有动态内容的缓存。让用户在一次会话周期内的所有请求始终转发到一台特定的后端服务器上,这种机制也称为粘滞会话(Sticky Sessions)。
对于大多数中等规模的站点,拥有5 个100Mbps 的NAT 集群,再加上DNS-RR,通常足够应付全部的业务。
数据库的垂直分区是将不同表放在不同服务器。读写分离则是在主服务器上进行写操作,在从服务器上进行读操作。数据库的主从复制可以采用多级复制策略,即A->B, A->C,B->D, B->E, C->F。
水平分区(Sharding)意味着我们可以将同一数据表中的记录通过特定的算法进行分离,分别保存在不同的数据表中,从而可以部署在不同的数据库服务器上。