Java教程

网站架构设计与演进

本文主要是介绍网站架构设计与演进,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

      • 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)微服务:引入微服务组件,搭建可以满足大量用户访问与海量数据存储的互联网应用
在这里插入图片描述

这篇关于网站架构设计与演进的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!