微服务及相关组件概念

1. 参考资料

微服务(Microservices)——Martin Flower

https://www.bilibili.com/video/BV1LQ4y127n4?spm_id_from=333.999.0.0&vd_source=c581024b8cd9585ec6a75c56ac05571a

2. 微服务相关概念

1. 单体架构

在这里插入图片描述

将业务的所有功能集中在一个项目中开发,打成一个包部署。

优势: 架构简单、部署成本低、适合小型项目。

劣势: 耦合度高、扩展性差。

2. 分布式架构

在这里插入图片描述

根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。

优点: 松耦合、扩展性好、适合大型互联网项目。

缺点: 架构复杂、难度大。

3. 微服务架构

在这里插入图片描述

微服务是一种设计良好的分布式架构。

特点:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责。
  • 自治:团队独立、技术独立、数据独立,独立部署和交付。
  • 面向服务:服务提供统一标准的接口,与语言和技术无关。
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。

优点: 拆分粒度更小、服务更独立、耦合度更低。

缺点: 架构非常复杂、运维、监控、部署难度提高。

服务拆分原则

  • 不同微服务,不要重复开发相同业务
  • 微服务数据独立,不要访问其它微服务的数据库
  • 微服务可以将自己的业务暴露为接口,供其它微服务调用

服务间调用

服务A可以通过Http请求调用服务B。

在这里插入图片描述

3. 微服务框架及技术组件

在这里插入图片描述

2.1 注册中心

问题:

  • 服务A在发起远程调用的时候,该如何得知服务B实例的ip地址和端口?(到服务中心注册、拉取服务列表)
  • 有多个服务B实例地址,服务A调用时该如何选择?(负载均衡算法)
  • 服务A如何得知某个服务B实例是否依然健康,是不是已经宕机?(心跳检测)

注册中心的作用就是,保存服务列表、通过心跳检测服务状态、通过负载均衡算法分配服务实例。

2.2 远程调用

实现服务间的调用 (HTTP协议)

2.3 配置中心

当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置

在这里插入图片描述

2.4 网关

前端请求不允许直接访问微服务,必须先经过网关。

网关具有路由和过滤的功能,路由就是将请求分发给某个微服务,过滤将不符合条件的请求直接拦截。

在这里插入图片描述

2.5 服务监控、保护

保护服务调用者,保护服务调用时不要出现级联失败,竟可能快速返回服务失败,不让用户长时间等待。

保护服务提供方,接口限流。

猜你喜欢

转载自blog.csdn.net/ZHHX666/article/details/125096950