基于网关服务治理的研究与实践(三)微服务治理框架Spring Cloud

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
云原生网关 MSE Higress,422元/月
简介: SpringCloud是Spring官方推出的微服务治理框架,是一个基于Spring Boot框架实现的微服务架构开发工具集,其提供了完整的微服务解决方案,包括:服务治理、注册中心、配置管理、熔断器、服务路由等等。

3 微服务治理框架Spring Cloud

上一篇介绍了服务治理相关背景、概念及服务治理的内容和目标,及相关技术栈,本篇主要介绍服务治理框架Spring Cloud框架。

3.1 微框架Spring Boot

Spring框架是一个轻量级开源的容器框架,最初是由Rod Johnson提出,其本质是为了解决传统Java企业级应用开发中的复杂性问题。Spring框架引入了组件化的思想,采用依赖注入和面向切面编程等技术,解耦对象间的依赖关系,降低应用开发中的复杂性,快速实现企业级应用。早期的Spring框架基于XML的配置方式管理Bean,随着业务的增加,XML配置变得越来越臃肿,依赖关系也变得错综复杂,导致开发效率低下,使得应用更加难以维护和管理。

面对Spring框架XML配置和依赖管理的复杂性问题,Spring Boot应运而生。Spring Boot是基于Spring4搭建的微框架,其宗旨是为了简化Java企业级应用开发。Spring Boot遵循“约定优于配置”的思想,通过自动化配置简化现有Spring框架中XML复杂的配置和依赖关系管理。使用Spring Boot创建应用,其优点如下:

1)为基于Spring的开发提供方便快捷的入门体验。

2)开箱即用,可以更快更方便的与第三方应用、常用的组件整合及使用。

3)自动装配,提供第三方库默认配置,也可以通过修改默认值满足特定的需求。

4)提供了非功能性特征,如嵌入式服务器、安全性、健康检查、外部化配置等。

5)零配置,无多余的代码生成和XML配置。

6)简单,使编码、配置、部署及监控变得更简单,提高了开发、部署效率。

Spring Boot继承了Spring框架的核心特性及相关扩展功能,简化了对Spring已有技术的使用,无须繁杂配置即可快速构建应用程序。Spring Boot是开发单一服务框架的基础,Spring Cloud也建立于Spring Boot框架基础上,利用Spring Boot的开发便捷性简化了微服务基础设施的开发,提供了一套微服务开发工具包,用于增强基于Spring Boot创建的应用程序。图3-1展示了Spring Boot与这些框架之间的关系。

image.png

3-1 Spring与其他框架之间的关系

3.2 服务注册发现Eureka

 EurekaNetflix 开源的服务注册发现组件,也是Spring Cloud的重要组件。Spring CloudNetflix Eureka模块进行了封装,用于实现服务注册与发现。Eureka本身是一个基于REST的服务,包括两个组件:Eureka ServerEureka ClientEureka Server也称为服务注册中心,支持集群模式部署,每个服务端都可以作为对方的客户端进行相互注册与发现;Eureka Client既可以作为服务提供者,也可以作为服务调用者存在,负责处理服务的注册与发现,发送心跳给Eureka 服务端。图3-2Eureka的架构图。

image.png

图3-2 Eureka架构图

3.3 客户端负载均衡Ribbon

负载均衡是分布式系统架构设计中必须要考虑的重要因素,它对系统的高并发和高可用、缓解网络压力、增加系统吞吐量,提高数据处理能力具有重要作用。负载均衡分为服务端负载均衡和客户端负载均衡。

服务端负载均衡包括软件负载均衡和硬件负载均衡两种解决方案,其中软件负载均衡是指通过在服务器的操作系统上安装具有均衡负载功能的软件,如HAProxyNGINX等,硬件负载均衡是指在服务器与网络设备之间安装的负载均衡设备,如A10F5等。它们都维护一份可用的服务端列表,通过心跳健康检查机制确保服务端列表中的服务可用性,当客户端发起请求经过服务端负载均衡时,由服务端负载均衡器选取一个可用的服务端,并转发客户端的请求。

RibbonNetflix开源的客户端负载均衡工具,Spring Cloud Ribbon基于Netflix Ribbon实现,通过对Ribbon API的封装实现负载均衡,并将其集成于每个Spring Cloud构建的微服务和基础设施中。与服务端负载均衡不同,Ribbon的客户端负载均衡的每个客户端服务都维护着一份所要访问的服务清单,同样也需要心跳检查机制来维护服务端列表中服务的健康性。

Ribbon的负载均衡机制提供了若干负载均衡策略,用于在服务器列表中进行选择服务器,其内置的负载均衡策略包括:随机策略、轮询策略、重试策略、最低并发策略、可用过滤器策略、响应时间加权策略、区域权重策略。另外,Ribbon还提供了Ping机制和重试机制,Ping机制是通过定时Ping服务器的操作来检查服务器的存活状态,确保服务实例的可用性;而重试机制是为确保服务数据的一致性,当服务调用到故障的实例时,会再次尝试请求,并根据失败次数设置,尝试到所设定的失败次数后,更换实例访问,以达到通过重试解决短暂故障问题的目的。

3.4 服务容错保护Hystrix

在微服务架构中,存在着诸多的服务单元,各服务单元通过服务注册与订阅的方式互相依赖。服务之间的依赖通过远程调用的方式执行,调用过程中若存在网络延迟和服务故障,随着请求的不断增加,可能会阻塞整个调用链,使服务变得不可用,最终导致整个业务系统崩溃。为了保障整体系统的可用性,减少因服务不稳定因素出现故障的风险,可以使用熔断机制来解决这类问题。断路器模式通过快速响应失败的操作请求,缩短故障处理周期,而不是一直等到操作超时,使服务能够在正常服务时间内完成请求处理,避免因单点故障而引发系统整体的连锁故障反应。

HystrixNetflix开源的服务容错框架,该框架用于控制访问远程服务、第三方系统的服务节点,防止服务调用产生的级联故障导致系统雪崩,提供强大的容错和自我保护能力。Hystrix具备拥有熔断机制、线程和信号量隔离机制及回退机制,服务降级,请求缓存和请求合并,实时监控、报警及动态配置等服务保护功能。Spring Cloud集成了Hystrix组件,Hystrix通过超时容限和失败容错逻辑,来控制分布式系统中服务之间的交互;通过使用“舱壁模式”实现对依赖服务的线程池隔离,降低被依赖服务失效的风险,使服务本身得到完全保护,避免受到对依赖服务不可控的影响,从而提高系统的容错性和稳定性。

3.5 服务调用框架Feign

FeignNetflix提供的开源的Rest客户端工具。Spring Cloud Feign基于Netflix Feign实现,它提供了声明式、模板化的远程调用客户端的实现,并封装整合了客户端负载均衡Spring Cloud Ribbon与服务保护容错Spring Cloud Hystrix两个基础工具框架的功能,其目标在于简化Web服务客户端的开发,让Web调用更加简单。Spring Cloud Feign具备可插拔的注解支持,还支持插件式的编码器和解码器,这种可插拔的方式,可根据实际的需求进行定制化扩展和替换。

3.6 网关服务Zuul

ZuulNetflix开源的网关服务组件,是一个提供了微服务路由、负载均衡和过滤器解决方案的边缘服务框架。Zuul提供了一套过滤器机制,即将HTTP请求划分为不同的阶段,每个阶段由不同的过滤器处理,实现对微服务接口的拦截和校验。Zuul的工作原理如图3-3所示。Zuul的主要功能如下:

(1)验证与安全:对访问资源和来访者身份进行验证,拦截不符合要求的请求。

(2)追踪与监控:追踪后端服务运行数据,展示准确的请求状况。

(3)动态路由:动态的将请求转发到后端的服务实例。

(4)负载分配:根据负载类型设置相应的处理策略,放弃超出负载限制的请求。

(5)静态响应处理:提供静态类型的过滤器,直接响应部分请求,而不再将请求转发到服务内部返回响应。

(6)压力测试:逐渐增加访问集群的请求流量,从而测试集群的性能水平。

image.png

3-3 Zuul工作原理图

Spring Cloud Zuul基于Netflix Zuul进行了进一步的封装整合,用于实现API服务网关,提供了认证鉴权、动态路由、请求转发、熔断保护、安全过滤等功能。

Spring Cloud ZuulSpring Cloud Eureka进行了整合,其自身也作为一个应用注册到了Eureka服务中,并通过Eureka获取其它服务实例的信息,依此来实现动态路由的功能。Spring Cloud Zuul提供了诸多默认的核心过滤器,这些过滤器在网关服务启动时被自动加载和启用,也可以根据业务需要自定义实现过滤器。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
182 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
9天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2025 年 1 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
阿里云微服务引擎 MSE 及 云原生 API 网关 2025 年 1 月产品动态
|
5天前
|
Cloud Native API 微服务
微服务引擎 MSE 及云原生 API 网关 2025 年 1 月产品动态
微服务引擎 MSE 及云原生 API 网关 2025 年 1 月产品动态。
|
1月前
|
Cloud Native API 微服务
微服务引擎 MSE 及云原生 API 网关 2024 年 12 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 12 月产品动态。
|
1月前
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
99 17
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 12 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
150 12
|
8天前
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
|
2月前
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
447 13
Spring Cloud Alibaba:一站式微服务解决方案
|
2月前
|
Cloud Native API 微服务
微服务引擎 MSE 及云原生 API 网关 2024 年 11 月产品动态
微服务引擎 MSE 及云原生 API 网关 2024 年 11 月产品动态。
109 13
|
2月前
|
NoSQL 前端开发 测试技术
👀探秘微服务:从零开启网关 SSO 服务搭建之旅
单点登录(Single Sign-On,简称SSO)是一种认证机制,它允许用户只需一次登录就可以访问多个应用程序或系统。本文结合网关和SaToken快速搭建可用的Session管理服务。
130 8