Skip to content
🗂️ 文章分类: 随笔  
📝 文章创建时间: 2022-11-11
🔥 文章最后更新时间:暂无

[toc]

微服务概述及常见解决方案

微服务概述

微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一个个小的服务,每个服务运行在其独立的自己的进程中,服务之间互相协调、互相配合。

优点:

  • 微服务是松藕合的,无论是在开发阶段或部署阶段都是独立的。能够快速响应, 局部修改容易, 一个服务出现问题不会影响整个应用。
  • 易于和第三方应用系统集成, 支持使用不同的语言开发, 允许你利用融合最新技术。
  • 每个微服务都很小,足够内聚,足够小,代码容易理解。团队能够更关注自己的工作成果, 聚焦指定的业务功能或业务需求。
  • 开发简单、开发效率提高,一个服务可能就是专一的只干一件事, 能够被小团队单独开发,这个小团队可以是 2 到 5 人的开发人员组成。

缺点:

  • 开发人员要处理分布式系统的复杂性
  • 多服务运维难度,随着服务的增加,运维的压力也在增大
  • 系统部署依赖高、服务间通信成本高、数据一致性要求高、系统集成测试难度大、性能监控要求高

微服务架构方案

为了解决微服务的缺点,所以也就有了一系列的微服务解决方案,本质是工具集。

第一套解决方案:Apache Dubbo Zookeeper

技术架构:

  • Zookeeper(服务注册中心)
  • Dubbo-monitor(服务监控)

备注:Dubbo相当不完善,需要借助很多第三方组件

第二套解决方案:Spring Cloud Netflix 【已闭源】

技术架构:

  • Eureka (服务注册与发现)
  • Feign(整合了ribbon和Hystrix,负载均衡和熔断限流等)
  • Ribbon(负载均衡)
  • Hystrix (熔断限流,合并请求等)
  • Hystrix Dashboard (提供了服务监控的功能,提供了数据监控和友好的图形化界面)
  • Hystrix Turbine (Hystrix Turbine将每个服务的Hystrix Dashboard数据进行了整合。也是监控系统的功能)
  • Zuul (智能路由和过滤)
  • config (配置中心)

备注:2018年年底,Netflix宣布停止开发,进入维护模式。

第三套解决方案:Spring Cloud Alibaba

技术架构:

  • Nacos:动态服务发现、配置管理和服务管理平台。兼顾注册中心与配置中心。
  • Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  • RocketMQ:开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
  • Dubbo:一款高性能 Java RPC 框架。
  • Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
  • Arthas:开源的Java动态追踪工具,基于字节码增强技术,功能非常强大。

技术栈对比

服务注册中心

  • Eureka (所属 Netflix ,包括EurekaServer和EurekaClient)
  • Consul(所属SpringCloud,GO语言实现)
  • Zookeeper (所属Apache,JAVA语言实现 )
  • Nacos:(所属Alibaba,JAVA语言实现)

服务配置中心

  • Spring Cloud Config:提供统一配置的功能。
  • Spring Cloud Bus(消息总线):通过MQ将微服务的所有节点连接到一起通过消息总线实现自动配置刷新。
  • Nacos:所属Alibaba,兼顾配置注册中心和配置中心。

服务间通信组件

两种实现方式:

  • Dubbo的RPC方式。
  • SpringCloud的HTTP Restful方式。

HTTP Restful方式有两种实现方案:

  • RestTemplate(路径写死、没有负载均衡)+Ribbon(所属Netflix ,实现负载均衡)
  • OpenFeign(所属SpringCloud,封装了Netflix 的Feign,自带负载均衡)

服务熔断组件

采用服务熔断或服务降级的方式解决服务雪崩问题。

  • Hystrix (所属Netflix)
  • Sentinel(所属Alibaba)

服务网关组件

用来统一服务总入口,实现路由转发和过滤。

  • Zuul1.x、Zuul2.x (所属Netflix)
  • Gateway(所属SpringCloud)

总结

综上,目前最佳方案是:

  • 服务注册中心 Nacos
  • 服务配置中心 Nacos
  • 服务熔断组件 Sentinel
  • 服务间通信组件 OpenFeign
  • 服务网关组件 Gateway

Released under the MIT License.