大型网站技术架构(六)伸缩性

大型网站技术架构核心原理与案例分析 读书笔记

伸缩性架构

一、设计

不同功能的物理分离

纵向分离:

网站具体产品
可复用业务服务
基础技术服务
数据库

横向分离:

横向分离的粒度可以非常小,电商网站每个页面都会独立部署

单一功能通过集群伸缩

  • 应用服务器集群
  • 缓存服务器集群
  • 存储服务器集群

二、应用服务器集群

负载均衡

关键组件:HTTP请求分发——负载均衡器。

主要的负载均衡技术有以下几种:

  • HTTP重定向。HTTP 302重定向,实际中很少使用。性能差。
  • DNS域名解析。大型网站通常把DNS作为第一级负载均衡。解析后得到内部服务器的负载均衡服务器,然后再分发到真实服务器。
  • 反向代理。反向代理是用于缓存资源的,通常也用于负载均衡。实际上反向代理服务器几乎都有负载均衡功能。反向代理服务器需要配置双网卡。反向代理负载均衡也成为应用层负载均衡,优点是部署简单,缺点是性能可能成为瓶颈。
  • IP负载均衡。响应数据吞吐量受制于负载均衡服务器网卡带宽。
  • 数据链路层负载均衡。在数据链路层修改mac地址进行负载均衡。数据传输方式成为三角传输模式。响应数据包不经过负载均衡直接返回。负载均衡通过修改mac进行请求分发。这种负载均衡方式又叫做直接路由(DR).链路层负载均衡是大型网站使用最广的一种负载均衡手段。Linux平台上最好的开源的链路层负载均衡产品是LVS(Linux Virtual Server).

负载均衡算法

  • Round Robin. 轮询,每台服务器处理的请求数目都相同。适用于所有服务器硬件配置都相同的场景。
  • Weighted Round Robin. 加权轮询
  • Random. 随机。如果应用服务器配置不同,可以使用加权随机算法。
  • Source Hashing. 实现会话黏滞。

三、分布式缓存服务器集群

  • Memcached设计
  • Memcached伸缩挑战
  • 分布式一致性hash算法、虚拟节点

四、存储服务器集群

关系型数据库的伸缩性设计

  • 读写分离
  • 业务分库(跨库的表不能进行join操作)
  • 表分片,将一张表拆开分别存储在多个数据库中。开源产品有Amoeba和Cobar.

NoSQL数据库的伸缩性设计

  • HBase

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