网站架构的伸缩性设计

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介:

网站开发初期,我们习惯性把所有代码都写到一个项目中。

前台、后台、缓存、数据库、静态资源... 等等。

网站系统物理分离

慢慢的系统会原来越大,很显然需要面对大量用户的高并发访问和存储海量数据。

很多用户的请求,不可能在一台服务器上完成。

很多缓存数据,数据库数据,也不可能在一台服务器上完成。

这是,网站的伸缩性架构就变得尤为重要。

如下图。

原理

我们通过多台服务器组装一个整体共同提供服务,通过不断地向集群中加入服务器,来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。

衡量架构伸缩性的主要标准:

  • 是否容易向集群中添加新的服务器。
  • 当加入新的服务器,是否可以提供和原来的服务器无差别的服务。
  • 集群中可容纳的总的服务器数量是否有限制。

应用服务器集群

只要服务器上不保存数据,所有的服务器都是对等的,通过负载均衡设备就可以向集群中增加服务器。

关系型数据库集群(MYSQL)

关系型数据库的集群伸缩性方案必须在数据库之外实现,通过路由分区等手段将部署有多个数据的服务器组成一个集群。

例如:Mysql 等。

非关系型数据库集群(NOSQL)

非关系型数据库先天就是为海量数据库准备的,因此对伸缩性的支持非常好。

例如:Redis、Memcache 等等。

缓存服务器集群

加入新的服务器可能会导致缓存路由失效,进而导致集群中大部分缓存数据都无法访问。

部署前需要改进缓存路由算法保证缓存数据的可访问性。

静态资源服务器集群

比如 CSS,JS,Img 等资源进行部署到服务器集群,降低流量并提高页面呈现速度。

网站的纵向分离

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

如下图。

网站的横向分离

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

如下图。

单一功能通过集群规模进行伸缩。

将不同功能分离部署可以实现一定程度的伸缩性,但是随着网站访问量的逐步增加,即使分离到最新粒度的独立部署单一服务器也不能满足业务规模的要求。

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

比如:搜索功能。

如果一台服务器可以提供每秒1000次的请求服务,如果网站高峰期,每秒搜索访问量为10000次。

那么,就需要你部署10台服务器构成一个集群。

同理,缓存服务器也会出现这种情况。

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

总结

集群伸缩性,可以分为应用服务器集群伸缩性和数据服务器集群伸缩性。

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

大家,可以根据每一种具体的架构设计进行深究。

文章借鉴于书籍《大型网站技术架构》。


作者:nick_dreamer

来源:51CTO

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
缓存 负载均衡 算法
“软件系统三高问题”高并发、高性能、高可用系统设计经验
​ 总的来说解决三高问题核心就是 “分字诀” 业务分层、系统分级、服务分布、数据库分库/表、动静分离、同步拆分成异步、单线程分解成多线程、原数据缓存分离、分流等等。。。。 直观的表述就是:从前端用的CDN、动静分离,到后台服务拆分成微服务、分布式、负载均衡、缓存、池化、多线程、IO、分库表、搜索引擎等等。都是强调一个“分”字。
1501 0
“软件系统三高问题”高并发、高性能、高可用系统设计经验
|
1月前
|
消息中间件 存储 缓存
性能基础之大型网站技术架构模式
【2月更文挑战第15天】性能基础之大型网站技术架构模式
69 3
性能基础之大型网站技术架构模式
|
11月前
|
缓存 应用服务中间件 数据库
【系统架构】大型网站系统架构演化实例——使用缓存改善网站性能
【系统架构】大型网站系统架构演化实例——使用缓存改善网站性能
63 0
|
12月前
|
存储 缓存 负载均衡
高并发架构都要考虑哪些方面?
高并发架构都要考虑哪些方面?
|
存储 弹性计算 人工智能
集中式架构和分布式架构哪种更好?
集中式架构的优势主要是设备数量少,架构设计简单、通用与应用耦合度低,资源可以灵活调度,部署容易。数据集中存储和处理,无需多个节点之间分布式协作,所以具有系统响应快,数据可靠性和一致性好的优点。由于架构简单,设备少,所以在系统运维,容灾设计,空间用电等方面都具有较大优势。稳健、可靠、易维护管理是集中式架构的特点,所以集中式架构多用于传统的银行、电信、交通、医疗等行业。数据显示,2019年,仍有92%的银行选择购买集中式架构的服务器,以确保关键业务稳定运行。 而分布式架构的优势主要是灵活、性价比高,同时也安全自主,其弹性伸缩能力优势明显。所以随着时下数据量的剧增,分布式架构在这方面的能力展露锋芒
533 0
|
存储 缓存 负载均衡
「架构技术专题」超详细网站伸缩性架构的设计(7)
首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力。
|
缓存 分布式计算 前端开发
大型网站在架构上应当考虑哪些问题?
分层:分层是处理任何复杂系统最常见的手段之一,将系统横向切分成若干个层面,每个层面只承担单一的职责,然后通过下层为上层提供的基础设施和服务以及上层对下层的调用来形成一个完整的复杂的系统。
1283 0
|
存储 缓存 负载均衡
网站的伸缩性架构
一、网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性; image (2)横向分离:将不同的业务模块分离部署,实现系统的伸缩性; image 1.2 单一功通过集群规模实现伸缩 使用服务器集群,即将相同服务部署在多台服务器上构成一个集群整体对外提供服务。
1138 0