为什么需要架构
网上有许多资料, 也有很多书籍提到这个. 个人总结大概是这样:
- 类似建筑的蓝图, 提供一个抽象的结构来检查是否能满足现在和未来的需求.
- 对开发来讲, 使模块清晰, 更方便的解决复杂的需求
- 对企业来讲, 更好的做风险管理和降低成本
常见架构
Software Architecture Patters 主要提到5种:
- 分层架构: 最常见,容易测试,易于开发, 但是因为请求跨越层次过多,而各个层次的耦合又较为紧密,性能稍弱.
- 事件驱动架构: 核心是利用消息队列将生产者和消费者的耦合降低, 但是需要考虑许多额外的诸如通信, 多任务处理, 失败策略等
- 微内核架构: 通过内核+插件的方式实现各种功能,可以想象一下flask
- 微服务架构: 服务都独立, 各个服务通过RPC调用,例如REST API. 近几年因为虚拟机和容器化的流行, 也随之流行
- 基于空间的架构: 建议直接看原文, 我的理解是将各个模块提取出来再通过拓展原功能减少耦合来实现容易扩展.
Reference:
Software architecture patters github中文翻译