美文网首页我爱编程
大型网站技术架构(六)伸缩性

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

作者: 俊杰的笔记 | 来源:发表于2018-04-19 16:28 被阅读22次

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

    伸缩性架构

    一、设计

    不同功能的物理分离

    纵向分离:

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

    横向分离:

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

    单一功能通过集群伸缩

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

    二、应用服务器集群

    负载均衡

    关键组件: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

    相关文章

      网友评论

        本文标题:大型网站技术架构(六)伸缩性

        本文链接:https://www.haomeiwen.com/subject/cawwkftx.html