网站架构设计与演进
2021/7/17 23:08:46
本文主要是介绍网站架构设计与演进,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
- 1、架构核心要素
- 1.1、高性能
- 1.2、高可用
- 1.3、易伸缩
- 1.4、易扩展
- 1.5、安全性
- 2、架构模式
- 2.1、分层与分割
- 2.2、分布式与集群
- 2.3、缓存
- 2.4、异步
- 2.5、冗余
- 2.6、自动化
- 2.7、安全
- 3、架构演进
1、架构核心要素
1.1、高性能
浏览器端
:浏览器缓存、使用页面压缩、合理布局页面、CDN、资源动静分离
服务器端
:缓存热点数据(本地缓存、分布式缓存)、异步(消息队列)、集群
代码层面
:改善内存管理、多线程、批处理、SQL优化
数据库
:索引、读写分离、分库分表
1.2、高可用
目标
:一般需要做到99.99%可用,终极目标时7*24
方案
:冗余,集群、灾备、多活等确保不会因为局部故障导致全局不可用或可迅速恢复;灰度发布确保不停机上线;
1.3、易伸缩
目标
:应对大量用户高并发请求、海量数据存储时,方便扩容
方案
:在不影响系统运行情况下,可加入新的机器、缓存、数据库到集群中
1.4、易扩展
目标
:快速响应各种变化的需求,实现功能平滑扩展
方案
:事件驱动架构(消息队列解耦业务)、服务化(分布式、微服务)实现服务服务员和独立扩展
1.5、安全性
目标
:网络安全、应用安全、数据安全
2、架构模式
2.1、分层与分割
分层
:横向切分,让每一层职责更独立,便于管理、分工和维护,如MVC
分割
:纵向切分,将复杂系统按业务模块进行高内聚切分,便于开发、维护、分布式部署,如单体应该切分为面向服务应用
2.2、分布式与集群
分布式
:分布式意味着可以调动更多的机器、CPU、内存、储存资源进行计算和处理,提高系统性能和并发能力
集群
:集群其一是解决单机并发瓶颈,其二是为了实现系统高可用
2.3、缓存
目的
:缓存就是将数据存在距离计算最近的位置以加快处理速度。
使用场景
:一是数据访问热点不均衡,某些频繁访问数据应该放入缓存;二是数据更新较低频,在某个时间内有效,不会很快过期,否则可能读到过期的脏数据;
2.4、异步
使用消息中间件,进行系统异步解耦,提高性能,应对高并发
2.5、冗余
服务器
:集群,确保7*24服务
数据
:灾备、异地多活数据中心,确保故障快速恢复
2.6、自动化
目的
:提高效率、减少人为干预故障、确保运维稳定性
方案
:自动化发布(CI/CD)、自动化监控预警
2.7、安全
网络安全、应用安全、数据安全
3、架构演进
1)单体架构
:业务初期,用户量较少,单体性价比最高
2)应用与数据分离
:业务量上升,一台机器无法满足需要,性能逐步下降,开始进行分离
3)缓存引入
:业务量继续上升,应用性能下降,引入缓存,将热点数据放入缓存服务器,减小数据库压力
4)读写分离
:全部写都访问数据库,越来越多读依然访问数据库,数据库成为瓶颈,拆分为主从读写分离模式
5)集群与分布式
:为应对高并发和保证高可用,扩展集群,同时将单体系统根据业务模块拆分为独立服务部署(如用户服务、订单服务、商品服务)
6)微服务
:引入微服务组件,搭建可以满足大量用户访问与海量数据存储的互联网应用
这篇关于网站架构设计与演进的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南