前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【原创】SpringCloud②

【原创】SpringCloud②

作者头像
零点
发布2023-03-03 20:38:42
3820
发布2023-03-03 20:38:42
举报
文章被收录于专栏:微科技微科技

Hystrix断路器

Hystrix断路器的概述

Hystrix是一个处理分布式系统的延迟和容错的开源库,在分布式系统中,许多依赖不可避免的会调用失败,比如超时,异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失效,避免级联故障,以提高分布式系统的弹性。

"断路器"本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或抛出调用方法无法处理的异常,这样就保证了服务调用方的线程不会被长时间,不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

本质上是当服务发生异常后返回一个兜底响应。

Hystrix断路器的主要作用

服务降级 fallback:服务器忙,请稍后再试,不让客户端等待并立即返回一个友好提示,fallback。

服务降级出现的情况: 程序运行异常,超时,服务熔断触发服务降级,线程池/信号量打满也会导致服务降级

服务熔断 break:服务器达到最大访问量后,服务不可访问或高并发访问量大,直接拒绝访问,然后调用服务降级的方法并返回友好提示。当检测到该系欸但服务调用响应正常后,恢复调用链路。在Spring Cloud,熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败调用到一定阈值,默认是5秒内20次调用失败,就会启动熔断机制。

服务限流 flowlimit:秒杀高并发等操作,严禁大批量请求,对同一时刻请求数进行限制。 接近实时的监控

Hystrix服务降级的实现

使用@HystrixCommand()实现 1.yml文件的配置:

2.步骤二:业务方法中添加注解并新建兜底方法。

3.步骤三:主启动类上添加@EnableCiruitBreaker(回路 )注解。

Hystrix全局服务降级的实现

1.步骤一:业务方法中添加兜底方法:

2.步骤二:在需要服务降级的情况的业务方法上添加@HystrixCommand注解。 3.步骤三:在实现业务的类上添加@DefaultProperties()注解。

4.步骤四:主启动类上添加@EnableCiruitBreaker(回路)注解。

注意:业务方法上@HystrixCommand()中添加了fallback属性,默认调用自身方法上的兜底方法。

Hystrix实现服务熔断

服务熔断机制在服务降级的基础上添加了服务检测机制,当服务响应正常后,自动恢复链路的调用。服务熔断后断路器会进行跳闸,并调用fallback的方法,当服务压力降低后断路器会进入半开状态,允许部分请求调用服务,当服务可以调用时,断路器自动恢复连接

步骤一:在需要实现服务熔断机制的业务方法上添加注解,并定义服务降级执行的兜底方法。

步骤二:主启动类上添加@EnableCiruitBreaker(回路 )注解。

GateWay路由

GateWay介绍

GateWay是SpringCloud开发的,是Netflix的Zuul上的替代版。SpringCloud GateWay是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty(非阻塞式高性能框架)。 Spring Cloud GateWay的目标提供通体的路由方式且基于Filter链的方式提供了网关基本的功能,例如:安全,监控和限流。

GateWay特性

基于Spring Framwork5,Project Reacator和Spring Boot2.0进行构建。 动态路由:能够匹配任何请求属性; 可以对路由指定Predicate(断言)和Filter(过滤器); 集成Hystrix的断路器功能; 集成Spring Cloud服务发现功能; 易于编写的Predicate(断言)和Filter(过滤器); 请求限流功能; 支持路径重写。

GateWay中的关键字

Route(路由): 路由是构建网关的基本模块,它由ID,目标URL,一系列的断言和过滤器组成。如果断言为True则匹配该路由。 Predicate(断言):可以匹配HTTP请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由。 Filter(过滤):Spring框架中GateWaryFilter的实例,使用过滤器,可以在请求被路由钱或者之后对请求进行修改。

GateWary工作流程

GateWay工作在微服务前,Nginx后

GateWay基本实现

1.步骤一:添加pom文件。

org.springframework.cloud spring-cloud-starter-gateway

2.步骤二:配置Yml文件。

server: port: 9527 spring: application: name: cloud-gateway cloud: gateway: routes: - id: payment_routh #路由的ID,没有固定规则但要求唯一,建议配合服务名 uri: http://localhost:8001 #匹配后提供服务的路由地址 predicates: - Path=/payment/get/** #断言,路径相匹配的进行路由 - id: payment_routh2 uri: http://localhost:8001 predicates: - Path=/payment/lb/** #断言,路径相匹配的进行路由 eureka: instance: hostname: cloud-gateway-service client: service-url: register-with-eureka: true fetch-registry: true defaultZone: http://eureka7001.com:7001/eureka

3.步骤三:启动项目测试。

注意:GateWay的Pom文件中不需要引入Spring-start-web依赖

GateWay路由的两种配置

第一种:Yml文件配置

第二种:编码配置

GateWay实现动态路由

默认情况下GateWay会根据注册中心注册的服务列表,以注册中心上微服务名为路径创建动态转发,从而实现动态路由的功能。 Yml文件配置

GateWay的Filter操作

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hystrix断路器
    • Hystrix断路器的概述
      • Hystrix断路器的主要作用
        • Hystrix服务降级的实现
          • Hystrix全局服务降级的实现
            • Hystrix实现服务熔断
            • GateWay路由
              • GateWay介绍
                • GateWay特性
                  • GateWay中的关键字
                    • GateWary工作流程
                      • GateWay基本实现
                        • GateWay路由的两种配置
                          • GateWay实现动态路由
                            • GateWay的Filter操作
                            相关产品与服务
                            微服务引擎 TSE
                            微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档