架构概述:架构演化、模式与核心要素
架构之美
共 6640字,需浏览 14分钟
·
2021-05-18 21:54
- 前言 -
- 架构演化发展历程 -
初始阶段
应用和数据分离
使用缓存
- 使用应用服务器集群 -
读写分离
反向代理和CDN
使用分布式文件系统和分布式数据库系统
分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。不到不得已时,网站更常用的数据库拆分手段是业务分库,将不同业务的数据库部署在不同的物理服务器上。
使用NoSQL和搜索引擎
业务拆分
![image.png](https://filescdn.proginn.com/443cef3a5448354776b7b67a8f53e3c0/4df44eaab11f37afcdbb0ff888749aec.webp)
分布式服务
- 架构模式 -
分层
![image.png](https://filescdn.proginn.com/0128098dbcd97882ceb2973b701bb1b9/792c4f79a3b78c80d24940702f04460e.webp)
分割
分布式
意味着服务调用必须通过网络,这可能会对性能造成比较严重的影响。 服务器越多,宕机的概率也就越大,造成的服务不可用可能会导致很多应用不可访问,使网站可用性降低。 数据在分布式的环境中保持数据一致性非常困难,分布式事务也难以保证。 系统依赖错综复杂,开发管理维护困难。
集群
缓存
异步
提高系统可用性。消费者服务器发生故障,数据会在消息队列服务器中存储堆积,生产者服务器可以继续处理业务请求,系统整体表现无故障。 消费者服务器恢复正常后,继续处理消息队列中的数据。 加快网站响应速度。处在业务处理前端的生产者服务器在处理完业务请求后,将数据写入消息队列,不需要等待消费者服务器处理就可以返回,响应延迟减少。 消除并发访问高峰。用户访问网站是随机的,存在访问高峰和低谷。 使用消息队列将突然增加的访问请求数据放入消息队列中,等待消费者服务器依次处理,就不会对整个网站负载造成太大压力。
冗余
自动化与安全
- 架构核心要素 -
性能
浏览器: 浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等 CDN和反向代理 本地缓存和分布式缓存 异步消息队列 应用层: 服务器集群 代码层: 多线程、改善内存管理等 数据层: 索引、缓存、SQL优化等,以及合理使用NoSQL数据库
可用性
伸缩性
扩展性
安全性
作者:与昊
来源:segmentfault.com/a/1190000039969525
![](https://filescdn.proginn.com/a85dd602f925d0cfd560635a0aaa6ca4/97c0f35eb40a92aa95daf5f5c3c68fc9.webp)
评论