zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【项目实战】服务降级入门介绍

项目服务入门 介绍 实战 降级
2023-09-14 09:04:55 时间

一、什么是服务降级?

服务降级是指在系统出现异常或高负载时,通过牺牲部分功能来保证核心功能的可用性和稳定性。服务降级可以通过多种方式来实现,如返回默认值、返回缓存数据、返回空数据等。

当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。

举例说明:

假如目前有很多人想要给我付钱,但我的服务器除了正在运行支付的服务之外,还有一些其它的服务在运行,比如搜索、定时任务和详情等等。
然而这些不重要的服务就占用了JVM的不少内存与CPU资源,为了能把钱都收下来(钱才是目标),设计了一个动态开关,把这些不重要的服务直接在最外层拒掉。
这样处理后的后端处理收钱的服务就有更多的资源来收钱了(收钱速度更快了),这就是一个简单的服务降级的使用场景。

二、服务降级主要使用场景

当整个微服务架构整体的负载超出了预设的上限阈值或即将到来的流量预计将会超过预设的阈值时,
为了保证重要或基本的服务能正常运行,可以将一些 不重要 或 不紧急 的服务或任务进行服务的 延迟使用 或 暂停使用。

三、服务降级框架 - Hystrix

在Spring Cloud中,可以使用Hystrix来实现服务降级。
Hystrix是一款非常优秀的服务降级框架,可以帮助我们构建高可用、高性能的分布式系统。

3.1 Hystrix是什么?

Hystrix是一个开源的容错框架,Hystrix是Netflix开源的一款服务降级框架,它可以通过控制服务的调用来实现服务的降级,从而保证整个系统的可用性和稳定性。

3.2 Hystrix中重要的功能

Hystrix可以通过断路器模式来实现服务降级、服务熔断、服务限流等几个重要的功能

3.2.1 断路器机制

可以根据服务的调用情况自动开启或关闭断路器,从而保护整个系统的稳定性。

3.2.2 资源隔离

通过线程池隔离和信号量隔离等方式,避免服务之间因为资源争用导致的性能问题。

3.2.3 熔断机制

当服务出现异常或响应时间过长时,Hystrix会自动熔断该服务,避免服务的雪崩效应。

3.2.4 监控和报警

Hystrix提供了丰富的监控指标和报警机制,可以及时发现和解决服务的问题。

3.3 Hystrix的核心思想

核心思想:
是通过隔离服务之间的依赖关系,防止因某个服务的不可用导致整个系统的崩溃。

在使用Hystrix时,需要先定义一个HystrixCommand,然后在其中实现服务降级的逻辑。HystrixCommand可以通过注解或编程方式来定义,然后在需要进行服务降级的地方进行调用。
在HystrixCommand中,可以通过fallbackMethod属性来指定服务降级的方法,当服务出现异常或超时时,Hystrix会自动调用该方法来返回默认值或缓存数据,以保证系统的可用性和稳定性。

四、服务降级框架 - Sentinel

4.1 Sentinel是什么?

Sentinel是阿里巴巴开源的一种服务降级框架,它提供了实时监控、规则管理、流量控制等功能,能够帮助应用程序在高并发场景下保证稳定性和可靠性。
Sentinel是一种功能强大的服务降级框架,可以帮助应用程序在高并发场景下保证稳定性和可靠性,并提供了实时监控、规则管理、流量控制等功能,非常适合于大规模分布式系统中的服务降级场景。

4.2 Sentinel的主要特点

4.2.1 实时监控

Sentinel提供了实时监控功能,可以对系统的请求进行实时监控,包括请求次数、成功率、响应时间等指标,通过可视化的方式展示出来,帮助开发人员及时发现系统问题。

4.2.2 规则管理

Sentinel提供了规则管理功能,可以根据自定义的规则对请求进行限流、降级等操作,帮助应用程序在高并发场景下保证稳定性和可靠性。

4.2.3 流量控制

Sentinel提供了流量控制功能,可以对请求进行限流、熔断等操作,帮助应用程序在高并发场景下有效控制流量,避免系统崩溃。

4.2.4 高可用性

Sentinel提供了高可用性的支持,可以通过集群部署的方式实现高可用性,确保系统在故障或异常情况下依然能够正常运行。