• 网站架构的伸缩性设计


    回顾网站架构发展历程,网站架构发展史就是一部不断向网站添加服务器的历史,只要工程师能向网站的服务器集群中添加新的机器,

    只要新添加的服务器能线性提高网站的整体服务处理能力,网站就无需为不断增长的用户和访问而焦虑。

    一般来说网站的伸缩性设计可分为两类,一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩。

    前者是不同的服务器部署不同的服务,提供不同的功能;后者是集群内的多台服务器部署相同的服务,提供相同的功能。

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

    网站发展早期——通过增加服务器提高网站处理能力时,新增服务器总是从现有服务器中分离出部分功能和服务。

    每次分离都会有更多的服务器加入网站,使新增的服务器处理某种特定服务。

    事实上,通过物理分离不同的网站功能,实现网站伸缩性的手段,不仅可以用在网站发展的早期,

    而且可以在网站发展的任何阶段使用(将其细分),具体又可分为如下两种情况:

    (1)纵向分离(分层后分离)

    将业务处理流程上的不同部分分离部署,实现伸缩性。

    (2)横向分离(业务分割后分离)

    将不同的业务模块分离部署,实现系统伸缩性。

    横向分离的颗粒度可以非常的小,甚至可以一个关键网页部署一个独立服务,

    比如对于电商网站非常重要的产品详情页、商铺页面、搜索列表页面,每个页面都可以独立部署,专门维护。

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

    将不同功能分离部署可以实现一定程度的伸缩,但是随着网站访问量的逐步增加,

    即使分离到最小颗粒度的独立部署,单一的服务器也不能满足业务规模的要求。

    因此必须使用服务器集群,即将相同服务部署在多台服务器上构成一个集群整体对外提供服务。

    以搜索服务器为例,如果一台服务器可以提供每秒1000次的请求服务,即QPS(Query Per Second)为1000。

    那么如果网站高峰时每秒搜索访问量为10000,就需要部署10台服务器构成一个集群。

    若以缓存服务器为例,如果每台服务器可缓存40GB数据,那么要缓存100GB的数据,就要部署3台服务器构成一个集群。

    事实上,计算一个服务的集群规模,需要同时考虑其对可用性、性能的影响及关联服务集群的影响。

    具体的说,集群伸缩性又可分为应用服务器集群伸缩性和数据库服务器集群伸缩性。

    这两种集群对数据状态管理的不同,技术实现也有非常大的区别。

    而数据服务器集群也可分为缓存数据服务器集群和存储数据服务器集群,这两种集群的伸缩性设计也不大相同。

  • 相关阅读:
    针对Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1的解决方案
    MAC配置C++运行环境
    Keras 模型相关操作
    微信小程序 WXS
    vue 长列表优化
    webpack4 SplitChunks插件 代码拆分
    node path api
    mysql的模型依赖说明
    MySQL和MyCat replace
    SQL Server中WITH(NOLOCK)提示用在视图上会怎样(转载)
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/8449180.html
Copyright © 2020-2023  润新知