单块架构
功能集中、代码中心化、一个发布包、部署后运行在同一进程的应用程序,通常称之为单块架构应用。
单块架构通常划分三个层次:
- 表示层,聚焦数据显示和用户交互
- 业务逻辑层,聚焦业务逻辑处理
- 数据访问层,聚焦数据存储与访问
逻辑上虽然划分了三层,但并不是物理上的分层,也就是说,对不同层的代码而言,经历编译、打包、部署后,所有的代码最终还是运行在同一个进程中。
单块架构优点:
- 易于开发
- 易于测试
- 易于部署
- 易于水平伸缩
单块架构缺点:
-
维护成本增加
随着代码量的增加,在开发人员对全局功能缺乏深度理解的情况下,修复一个缺陷,还有可能引入其他缺陷。
-
持续交付周期长
-
新人培养周期长
-
技术选型成本高
-
可扩展性差
-
构建全功能团队难
互联网产品特点:创新成本低、需求变化快、用户群体庞大。
微服务架构
微服务架构与 SOA:
微服务本质:
- 服务作为组件
- 围绕业务组织团队
- 关注产品而非项目:You build it, you run it.
- 技术多样性
- 业务数据独立
- 基础设施自动化
- 演进式架构
分布式系统的复杂度:
- 性能
- 可靠性
- 异步
- 数据一致性
- 工具:开发、调试
微服务实践
如何从工程实践出发,尽早将开发、测试、部署、运维、监控的流水线打通,才能帮助团队更好地驾驭微服务。
日志聚合工具:LogStash (ELK 三大件之一)