架构模式
分层
分为应用层,服务层,数据层,后续继续分层
reference:https://zhuanlan.zhihu.com/p/40353581
为什么要分层?
- 分层的设计可以简化系统设计,让不同的人专注做某一层次的事情
- 分层之后可以做到很高的复用
- 分层架构可以让我们更容易做横向扩展
分层的缺点
- 增加代码复杂度
- 如果我们把每个层次独立部署,层次间通过网络来交互,那么多层的架构在性能上会有损耗。这也是为什么服务化架构性能要比单体架构略差的原因
reference:https://zhuanlan.zhihu.com/p/196733107
分层的原则
- 基于关注点为不同的调用目的划分层次
- 面对变化
- 保证同一层的组件处于同一个抽象层次
分割
将不同的功能和服务分割开飞,形成高内聚低耦合的模块单元。一是有助于软件的开发和维护,而是便于不同模块的分布式部署,提高网站并发处理能力和扩展能力
分布式
将不同模块部署在不同的服务器上,通过远程调用协调工作。意味着更多的计算机完成同样的功能,计算机越多,resource就越多,能够处理的并发访问和数据量就越大
分布式应用和微服务
分布式静态资源
分布式数据和存储
分布式计算
集群
多台服务器部署相同的应用构成一个集群,通过负载均衡对外服务,当更多用户访问的时候,只需要向集群中增加服务器即可
缓存
CDN
反向代理
本地缓存
分布式缓存
异步
在单一服务器可以通过多线程共享队列的方式实现异步,处在业务操作前面的线程将输出写入到队列,后面的线程从队列中读取数据进行处理。分布式系统中,多个服务器集群可以通过分布式消息队列实现异步,分布式队列可以看做内存队列的分布式部署
优点:
- 提高系统的可用性
- 加快网站响应速度
- 消除并发访问高峰
冗余
数据库定期备份,存档保存。实现冷备份以外,为保证在线业务高可用,还需要对数据库进行主从分离,实时同步实现热备份