微服务架构相关
微服务架构的概念
微服务架构并没有统一的定义,想要理解微服务架构需要与传统的 Web 应用对比。
传统的 WEB 应用结构
传统的 WEB 应用核心划分为: 业务逻辑,适配器以及 API 或者 UI 访问的 WEB 界面。
业务逻辑定义业务流程,业务规则和领域实体。适配器包含数据库访问组件,消息组件以及访问接口等,。
虽然以上功能会分模块开发,但是最终都会打包并部署为单体应用,。例如 Java 应用会打包为 WAR 包部署在 Tomcat 或者 Jetty 上面。
这种单体应用适用于小项目,因为
- 开发简单直接,便于管理
- 基本不会重复开发
- 功能都在本地,没有分布式的管理和调用开销。
缺点在于
- 开发效率低
- 代码维护难
- 部署不灵活
- 稳定性不高
- 扩展性不够
因此现在主流的设计会采用微服务架构
微服务架构
微服务架构的思路不是开发一个巨大的单体应用,而是将应用分解为无数小的,互联的微服务。一个微服务完成某个特定的功能,比如下单管理,用户管理等。
每个微服务都有自己的业务逻辑和适配器。一些微服务还会提供 API 接口给其他微服务和应用客户端使用。
可以将每个业务逻辑分解为多个微服务,微服务之间通过 RESET API 通信。通常情况下客户端不能直接访问后台微服务,而是通过 API Gateway 来传递请求。
API Gateway 一般负责路由,负载均衡,缓存,访问控制和鉴权等任务。
微服务架构的优点
- 解决了复杂性问题
将单体应用分解为多个微服务,强化了任务模块化的水平,因此微服务架构的开发速度快,更容易理解和维护。 - 使得不同的服务可以有专注于此服务的团队开发
- 每个微服务可以单独部署
- 每个微服务可以独立扩展
微服务架构的挑战
可以大致概括为
- API Gateway
- 服务间调用
- 服务发现
- 服务容错
- 服务部署
- 数据调用