网站的伸缩性架构

网站的伸缩性架构

网站的伸缩性设计

不同功能进行物理分离实现伸缩

回顾网站架构发展历程,网站架构史就是一部不断向网站添加服务器的历史。只要工程师能向网站的服务器集群添加新的机器,只要添加新的服务器能线性提高网站的整体服务处理能力,网站就无需为不断增长的用户和访问而焦虑

单一功能通过集群规模实现伸缩

即使分离到最小粒度的独立部署,单一的服务器也不能满足业务规模的要求。因此必须使用服务器集群,即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛拉车。

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

  • HTTP重定向负载均衡:利用HTTP重定向协议实现负载均衡。
  • DNS域名解析负载均衡:利用DNS处理域名解析请求的同时进行负载均衡
  • 反向代理负载均衡:利用反向代理服务器进行负载均衡
  • IP负载均衡:在网络层通过修改请求目标地址进行负载均衡
  • 数据链路层负载均衡:在通信协议的数据链路层修改mac地址进行负载均衡

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

分布式缓存集群的访问模型

在网站业务中,大部分的业务数据读操作请求事实上是通过缓存获取的,只有少量读操作请求会访问数据库,因此数据库的负载能力是以有缓存为前提而设计的。

伸缩问题:新增缓存服务器导致大部分缓存失效

Tips: 现在业界使用Redis作为缓存也非常常见

分布式缓存的一致性Hash算法

为了改进路由算法,使得新加入的服务器不影响大部分缓存数据的正确命中,现在流行一致性Hash算法,该算法用一个叫作一致性Hash环的数据结构实现KEY到缓存服务器的映射。

  • Part1:把服务器映射到环上
  • Part2:顺时针找到第一他服务器
  • Part3:增加一台服务器
  • Part4:虚拟服务器

Tips:俗话说,计算机行业的所有问题都可以通过增加一个抽象层来解决。计算机硬件、计算机网络、计算机软件都莫不如此。计算机网络的7层协议,每一层都可以看做是下一层的虚拟层;计算机操作系统可以看作是计算机硬件的虚拟层;Java虚拟机可以看作是操作系统的虚拟层;分层的计算机软件架构事实上也是利用虚拟层的概念。

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

关系数据库集群的伸缩性设计

  • 市场上主要的关系数据都支持数据主从复制功能,使用这个功能可以对数据库进行简单伸缩
  • 不同业务数据表部署在不同的数据库集群上,即俗称的数据分库
  • 在大型网站的实际应用中,即使进行了分库和主从复制,对一些表单数据仍然很大的表,比如Facebook的用户数据库,淘宝的商品数据库,还需要进行分片,将一张表拆开分别存储在多个数据库中

NoSQL数据库的伸缩性设计

问题:关系数据库难以处理海量数据及僵硬的设计约束

解决方案:NoSQL(Not Only SQL),作为关系数据库的补充,而不是替代方案。一般而言,NoSQL数据库产品都放弃了关系数据库的两大重要基础:以关系代数为基础的结构查询语言(SQL)和事务一致性保证(ACID),而强化高可用性和可伸缩性。

业界流行:目前应用最广泛的是Apache HBase

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值