关于后端系统架构的思考随笔
// 前端 - > 服务端(网关、具体服务) -> 数据层前端
我的看了一些书,写了一些代码,也作了一些架构工做。算法
系统架构能够经过业务
和非业务
两个方面来结合起来考虑。数据库
业务方面:
1. 系统具体提供什么服务
2. 业务模块划分
- 处理模块与模块之间的依赖:树性结构、网状结构
- 每一个模块是否作到了高内聚、低耦合
3. 外部入口(API或页面)是如何设计的
4. 业务可扩展性
- 可否快速响应新增业务需求,尽可能对可能变更的数据作成
- 良好的业务抽象
非业务方面:
1. 可用性:
1.1 服务可用性
1.3 工程质量:
2. 安全性
2.1 漏洞性质:
- SQL 注入
- Cookie伪造
- XSS跨站
- CC攻击
- DDOS攻击
2.2 系统权限设计
2.3 数据加密
3. 性能
3.1 集群负载均衡
3.2 MQ
3.3 缓存
- 堆内缓存
- 堆外缓存
- 一致性哈希缓存
- 分布式主从架构缓存
3.4 代码优化
3.5 吞吐性能
3.6 JVM层面
3.7 数据库层面
4. 水平伸缩性
4.1 服务器无状态
4.2 容器自动缩容扩容