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