【项目实战】服务降级入门介绍
一、什么是服务降级?
服务降级是指在系统出现异常或高负载时,通过牺牲部分功能来保证核心功能的可用性和稳定性。服务降级可以通过多种方式来实现,如返回默认值、返回缓存数据、返回空数据等。
当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。
举例说明:
假如目前有很多人想要给我付钱,但我的服务器除了正在运行支付的服务之外,还有一些其它的服务在运行,比如搜索、定时任务和详情等等。
然而这些不重要的服务就占用了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提供了高可用性的支持,可以通过集群部署的方式实现高可用性,确保系统在故障或异常情况下依然能够正常运行。
相关文章
- 自然语言交流系统 phxnet团队 创新实训 项目博客 (十三)
- Windows服务项目打包成安装包(Windows服务)-----------VS2017项目程序打包成.msi或者.exe
- webapp项目前端总结
- Javaweb项目不需要端口号及项目名的访问配置(已备注)
- 第二百五十四节,Bootstrap项目实战--案例
- 第二百五十三节,Bootstrap项目实战-资讯
- EasyRMS录播管理服务器项目实战:windows上开机自启动NodeJS服务
- 使用SAP云平台Mobile Service创建MDK项目
- [BI项目记]-BUG创建
- .NET平台开源项目速览(20)Newlife.Core中简单灵活的配置文件
- Atitit 软件采购与服务 实现的三种模式 企业软件V1.0模式=传统模式 1,定制开发类型, 主要特点为通用性差,需求独特。通常单项目价格高,多为政府采购或者垄断企业的大单。 2,标准产品轻
- 【项目实战】微服务中获取Header的内容的多种方式
- 【项目实战】使用Feign服务间相互调用,其实OpenFeign也没有想象中那么难嘛
- 【项目实战】Linux服务管理 之 开启/关闭防火墙
- 【项目实战】Python实现深度神经网络gcForest(多粒度级联森林)分类模型(医学诊断)
- [手游项目3]-8-排行榜redis实现
- 《Kotlin项目实战开发》第5章 函数与函数式编程
- 开源服务发现项目Zookeeper,Doozer,Etcd
- maven聚合项目以及使用dubbo远程服务调用debug操作。
- Eclipse 创建 Java 项目
- Java Web项目如何做到升级不断掉服务,同时涉及到的相关问题
- SpringCloud Alibaba微服务第5章之项目初始化
- Github删除仓库项目(详解)