- 单体应用的缺陷
- 复杂性高,所有的业务代码都集成再一个war包,各模块的关系混乱,代码质量难以管理
- 技术债务,随着业务模块的不断增加、开发人员的更迭,会形成不出问题不进行代码优化的技术债务
- 部署频率低,只要有新代码更新,必须重新部署
- 可靠性差,可能某一模块的bug会影响整个应用
- 扩展能力受限,单体应用只能进行整体进行扩展,无法根据业务模块的进行扩展
- 技术更新受限,单体应用程序的技术往往固定,很难变更
2.我所理解的微服务
微服务目前还没有一个确切的定义。我所理解的微服务即:将以往的单体应用按功能划分为多个功能相对单一的服务,各个服务之间相互独立,运行和部署环境同样独立;各服务之间通过http协议进行通讯,以RESTFUL API接口对外提供服务。
3.微服务的优点与缺点
优点:
- 易于开发与维护:聚焦特定业务、开发相对简单、复杂度低
- 单个服务启动较快:代码量少、耦合度低
- 局部修改、易于部署
- 技术栈扩展灵活
缺点:
- 分布式结构:复杂度高,维护成本高
- 重复劳动:相同的功能可能存在于多个微服务中,导致代码重复
4.微服务的设计原则:
- 单一原则(single):关注本服务的功能,具有功能边界、
- 服务自治:每个服务拥有独立的业务能力、独立的运行、部署环境。
- 轻量级通讯:各服务之间可以进行通讯,并且是轻量级的通讯,可跨平台、跨语言,例如https
- 微服务粒度:合理划分微服务的粒度,粒度太大违背微服务的设计初衷,太小浪费资源。
简单的微服务架构