1、分层(横向分割)
-分层架构是逻辑上的,三层结构可以物理部署在同一个物理机器上。一般分层的模块分离部署。
-可继续分层:应用层:视图层+业务逻辑层,服务层:数据接口层(适配层)+逻辑处理层
2、分割(纵向分割)
-按功能、服务分割,便于不通模块分布式部署,便于软件开发和维护。
3、分布式
-分层和分割都是为了分布式部署。不同模块部署在不同的服务器上,通过远程调用协同工作。
-存在的问题:
* 调用都通过网络,所以网络条件影响性能;
* 服务器多,宕机概率大,一台宕机可能导致多应用不可访问
* 保持数据一致性困难,分布式事务难以保证 * 网站依赖复杂,开发管理维护难 常用的分布式方案:
* 分布式应用和服务:分层分割应用和服务模块。便于复用共同业务
* 分布式静态资源:动静分离。静态资源独立分布式部署,采用独立域名。
* 分布式数据和存储:海量数据不能存储在单台计算机内。除了传统关系数据库进行分布式部署外,各种NoSQL产品基本都是分布式的
* 分布式计算:分布式计算框架进行批处理计算。将计算程序分发到数据所在位置以加速计算。
4、集群
-多台服务器部署相同应用构成一个集群,通过负载均衡设备对外提供服务。
-一个应用由多台服务器提供,当某台故障时,负载均衡设备会将请求转发到其他机器上。提高可用性。
5、缓存
* CDN(内容分发网络):缓存静态资源
* 反向代理:前端架构一部分,静态资源,无需将请求继续转发给服务器就能返回给用户
* 本地缓存:应用服务器本地缓存,本机内存中直接访问数据,无需访问数据库
* 分布式缓存:分布式缓存集群,应用程序通过网络通信访问缓存数据
6、异步
-系统解耦手段除了分层、分割、分布外,还有异步。
* 单一服务器中,多线程共享内存队列实现异步
* 多服务集群利用分布式消息队列实现异步
具体见笔记“分布式消息队列”:解耦、异步、削峰
7、冗余
* 冷备份:定期备份、存档保存
* 热备份:数据库主从分离,实时同步
* 容灾数据中心:网站程序和数据实时同步到多个容灾数据中心
8、自动化:自动化代码管理、自动化测试、自动化安全监测、自动化部署、自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降级、自动化分配资源
9、安全
网友评论