大型网站技术架构--伸缩性

架构的伸缩性设计

分离:纵向分离(模块分离),横向分离(分层)

集群

应用服务器集群的伸缩性设计

HTTP重定向 负载均衡

DNS  重定向 负载均衡

反向代理 负载均衡  HTTP层,应用层 负载均衡

IP负载均衡  网络层 

数据链路层 mac地址负载均衡

负载均衡算法

轮询

加权轮询

随机

最少连接

源地址散列

分布式缓存集群的伸缩性设计

Hash算法

简单hash  服务器数:3--->4  75%缓存失效  继续新增 失效 直线上升

一致性hash : 将 缓存 服务器 分布 在 0-2^32的环上,然后再把 key也算hash,然后顺序找到离,该key hash值最近的 缓存服务器。 (但是新增服务器 只会影响一台服务器,其他服务器 并不会受到影响)

怎么办: 计算机的任何问题 都可以通过增加一个虚拟层来解决

把每个 物理缓存机器,看成多个(经验值150个,太少影响扩展,太多影响性能)虚拟缓存机器。然后把他们均匀的分布在环上,新增时 均匀的 插入到 合理的位置

数据存储服务器的伸缩性设计

关系型数据库

分库 和 主从复制(读写分离)

分片产品:Amoeba和Cobar

Cobar是一个关系型数据库的访问代理,介于应用和服务器中间。应用通过JDBC访问Cobar集群,Cobar根据sql和分库规则分解sql,分发到Mysql集群不同数据库上去。

详见Cobar

NoSql数据库的伸缩性

为大型网站而生: 高可用性,可伸缩性,但是不支持事务。













你可能感兴趣的:(大型网站技术架构--伸缩性)