架构
单体架构
将业务的所有功能集中在一个项目中开发,打成一个包部署。
优点:
- 架构简单
- 部署成本低
缺点:
- 团队协作成本高
- 系统发布效率低
- 系统可用性差
微服务
是服务化思想指导下的一套最佳实践架构方案。服务化,就是把单体架构中的功能模块拆分为多个独立项目
- 粒度小
- 团队自治
- 服务自治
服务拆分原则
拆分目标:
- 高内聚:每个微服务的职责尽量单一,包含的业务相互关联度高、完整度高
- 低耦合:每个微服务的功能要相对独立,尽量减少对其它微服务的依赖
拆分方式:
- 纵向拆分:按照业务模块来拆分
- 横向拆分:抽取公共服务,提高复用性
工程结构:
-
独立的Project:将每个模块分成一个个独立的项目,放在统一的父文件夹里
缺点:不适合中小型项目,增加管理负担
-
Maven聚合:仍将其看作一个项目,每个模块相当于该项目的一个Module
技术栈-SpringCloud
是目前国内使用最广泛的微服务框架。 集成了各种微服务功能组件,并基于SpringBoot实现了组件的自动装配,从而提供了良好的开箱即用体验:
- 服务注册发现
- 服务远程调用
- 服务链路监控
- 统一配置管理
- 统一网关路由
- 流控、降级、保护