天天看点

大型网站技术架构核心原理与案例分析(李智慧)学习笔记1--大型网站架构模式

一、网站架构模式

  在工作中,经常会遇到类似场景下不断重复发生的问题,对于此类问题解决方案,我们经过抽象提取出来解决该类核心方案,即架构模式;

1.分层

   面临问题:系统耦合、不能更细粒度独立部署扩展为分布式集群提高并发和功能扩展、不能更有效的拆分工作开发维护、不利于公共服务及资源复用

   优点:系统切分之后便于分工开发维护、方便独立部署后期可以扩展分布式、软件逻辑结构清晰

实践方式:类似于MVC模式,将整体应用分为三层应用层 、服务层、数据层,也根据实际情况再可以针对分层进行更细粒度拆分;

2.分割

   面临问题:系统耦合整体庞大、不利于开发维护、不利于分布式扩展并发和功能扩展

   优点:系统分割之后便于分工开发维护、方便独立部署后期可以扩展分布式、软件逻辑结构清晰

实践方式:可以根据需要,选择分割粒度,分割方式主要为按照业务线或者功能模块;

3.分布式

面临问题:高并发访问、单节点故障、单节点性能提升性价比不高且有性能上线

缺点:分布式网络调用会有性能损耗、服务器多开发维护成本高、宕机概率高、分布式数据一致性问题

实践方式:分布式应用和服务(核心服务抽离复用)、分布式静态资源(独立域名访问静态资源)、分布式数据和存储(nosql数据库产品)、分布式计算、分布式配置、分布式锁、分布式文件

4.集群

面临问题:单机性能有上限、单机性能可用性比较低、并发量低、处理能力有限

实践方式:服务器集群化对外提供访问时候,通过负载均衡设备提供服务

5.缓存

面临问题:性能得不到满足(缓存是提高系统性能第一手段)

实践方式:CDN缓存静态资源、反向代理缓存、本地缓存、分布式缓存

6.异步

面临问题:系统高度耦合、不利于后续功能扩展、实时系统高并发情况可用性不足、网站响应慢、有并发访问高峰

实践方式:异步消息通知解耦系统RocketMq、RabbitMq等

7.冗余

面临问题:服务器总是可能会不可使用、数据总是可能会存在安全问题

实践方式:服务要集群提供服务、数据要做冗余备份

8.自动化

面临问题:部署发布减少人工介入造成错误、需要自动监控系统、系统自动容错失效转移等

实践方式:发布过程自动化、自动化代码管理、自动化测试、自动化安全检测、自动化部署、自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降级、自动化分配资源

9.安全

面临问题:安全问题一直存在,xss、csrf、sql注入

实践方式:密码、验证码、防火墙、加密、过滤、特殊字符编码转码、sql绑定参数(

#

方式能够很大程度防止sql注入)、交易业务风险控制(规则引擎或统计模型控制)

继续阅读