一个好的架构必须满足两方面挑战:业务复杂性和技术复杂性。
- 业务架构
- 应用架构
- 技术架构
业务架构就是讲清楚核心业务的处理过程,定义各个业务模块的相互关系,它从概念层面帮助我们理解系统面临哪些问题以及如何处理;而应用架构就是讲清楚系统内部是怎么组织的,有哪些应用,相互间是怎么调用的,它从逻辑层面帮助我们理解系统内部是如何分工与协作的。
技术架构就是讲清楚系统由哪些硬件、操作系统和中间件组成,它们是如何和我们开发的应用一起配合,应对各种异常情况,保持系统的稳定可用。所以,技术架构从物理层面帮助我们理解系统是如何构造的,以及如何解决稳定性的问题。
什么是架构师
- 沟通家里
- 抽象思维
- 多领域知识
- 技术前沿性
- 平衡取舍
产品经理的职责
就是:告诉用户,系统长什么样子;告诉开发,他要实现什么功能。
业务架构师的职责
架构的目标
- 业务的可扩展性
- 业务的可复用性
如何实现业务的可扩展性
系统的构成: 模块 + 关系
- 模块
从业务的角度看,每个模块都代表了某个业务概念,或者说业务领域
模块内部由数据和业务逻辑组成,其中数据是核心,业务逻辑围绕着数据,对数据做进一步加工,方便外部使用。
-
依赖关系 依赖关系实质上体现的是模块的组织结构。
-
MVC 架构
- 表示层 对应的前端模块
- 应用层 对应和前端表示层直接关联的服务端
- 聚合服务层
- 基础服务层
架构的转变
- 单体架构
- 分布式架构
- SOA架构 面向服务的架构
- 微服务架构
系统故障
- 资源不可以
- 资源不足
- 节点功能异常
如何避免故障
- 冗余无单点
- 水平扩展
- 柔性事务
- 系统可降级性 (限流,降级,熔断,功能禁用)
- 系统可监控
日活百万系统如何架构设计
前端改造
- web 端cdn优化
- nginx 负载均衡
- 通信线路备份 (前置代理机)