(一)什么是微服务?
微服务,又叫微服务架构(Microservice Architecture),是一种应用设计和构建的方法。它将一个应用分解为多个独立的 service,其中每个 service 执行一种功能,都是针对一组功能而设计的,并专注于解决特定的问题,但必须协同工作才能提供应用的全部功能。因此,一个团队做出的变更不会影响到整个应用。
借助微服务,将应用分解为多个核心功能,其中每个功能被称为 service,每个 service 都可以单独部署和构建,这意味着各个 service 均可单独运行,而且在出现故障时不会相互影响,且每个 service 都作为自主进程运行,并能够通过 API 与其他 service 进行通信。因此,开发团队能够快速构建新的应用组件,并满足企业不断变化的需求。
下图是一个微服务系统架构图:
1、当一个用户请求进来,会通过gateway网关去注册中心(服务都需要在注册中心注册)拉取所需要的服务列表;
2、再通过我们的本地负载均衡器ribbon(当路由的目标服务有多个时,需要做负载均衡)等进行路由(网关不处理业务,而是根据某种规则,把请求转发到某个微服务,这个过程叫做路由)到对应的服务。
3、服务与服务是可以调用的(服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API,各个微服务之间是松耦合的,每个微服务仅关注于完成一件任务)。
(二)微服务的构成
[1] 一个微服务框架至少需要的组件有:网关、注册中心、微服务,如上图。如果想要通过服务来统一管理我们的配置文件,那么就还需要一个配置中心。常用的微服务组件见下图:
注册中心包括:服务注册、服务发现。在微服务架构里主要起到了协调者的一个作用。
服务网关包括:服务发现、安全认证和授权、路由管理、协议转换、负载限流
服务熔断包括:监控、断路器状态管理、故障恢复、限流
分布式配置中心包括: 集中化配置管理、配置信息动态刷新、配置信息版本控制、配置信息安全管理、配置信息监控
负载均衡
服务调用
[2] 你所开发的系统如果是微服务架构,那首先需要选择不同的微服务体系,目前主要是这三个体系:Spring Cloud、Spring Cloud Alibaba、ServiceMesh。不同的体系,微服务组件对应的技术选型也是不一致的。下面看SpringCloud与Alibaba组件对比:
(三)微服务架构的优势
- 可扩展性: 在增加业务功能时,单一应用架构需要在原先架构的代码基础上做比较大的调整,而微服务架构只需要增加新的微服务节点,并调整与之有关联的微服务节点即可。在增加业务响应能力时,单一架构需要进行整体扩容,而微服务架构仅需要扩容响应能力不足的微服务节点。
- 容错性: 在系统发生故障时,单一应用架构需要进行整个系统的修复,涉及到代码的变更和应用的启停,而微服务架构仅仅需要针对有问题的服务进行代码的变更和服务的启停。其他服务可通过重试、熔断等机制实现应用层面的容错。
- 技术选型灵活: 微服务架构下,每个微服务节点可以根据完成需求功能的不同,自由选择最适合的技术栈,即使对单一的微服务节点进行重构,成本也非常低。
- 开发运维效率更高: 每个微服务节点都是一个单一进程,都专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模团队或者个人完全掌控,易于保持高可维护性和开发效率。
如果有用,请点赞,谢谢