并发编程-26 高并发处理手段之服务降级与服务熔断 + 数据库切库分库分表

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 并发编程-26 高并发处理手段之服务降级与服务熔断 + 数据库切库分库分表

2019080611330380.jpg



服务降级与服务熔断概述


服务熔断: 一般是指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施,熔断也可以称为过载保护


服务降级: 当服务压力剧增的时候根据当前的业务情况及流量对一些服务和页面有策略的降级,以此缓解服务器的压力,以保证核心任务的进行。同时保证部分甚至大部分任务客户能得到正确的响应。也就是当前的请求处理不了了或者出错了,给一个默认的返回。


服务降级举例


超时降级:主要配置好超时时间和超时重试次数和机制,并使用异步机制探测回复情况


失败次数降级:主要是一些不稳定的api,当失败调用次数达到一定阀值自动降级,同样要使用异步机制探测回复情况


故障降级:比如要调用的远程服务挂掉了(网络故障、DNS故障、http服务返回错误的状态码、rpc服务抛出异常),则可以直接降级。降级后的处理方案有:默认值(比如库存服务挂了,返回默认现货)、兜底数据(比如广告挂了,返回提前准备好的一些静态页面)、缓存(之前暂存的一些缓存数据)


限流降级: 比如当秒杀或者抢购一些限购商品时,此时可能会因为访问量太大而导致系统崩溃,此时我们会使用限流来进行限制访问量,当达到限流阀值,后续请求会被降级;降级后的处理方案可以是:排队页面(将用户导流到排队页面等一会重试)、无货(直接告知用户没货了)、错误页(如活动太火爆了,稍后重试)等等


服务熔断 VS 服务降级


两者其实从某些角度看是有一定的类似性的:


目的很一致,都是从可用性可靠性着想,为防止系统的整体缓慢甚至崩溃,采用的技术手段


最终表现类似,对于两者来说,最终让用户体验到的是某些功能暂时不可达或不可用


粒度一般都是服务级别,当然,业界也有不少更细粒度的做法,比如做到数据持久层(允许查询,不允许增删改)


自治性要求很高,熔断模式一般都是服务基于策略的自动触发,降级虽说可人工干预,但在微服务架构下,完全靠人显然不可能,开关预置、配置中心都是必要手段;


而两者的区别也是明显的:


触发原因不太一样,服务熔断一般是某个服务(下游服务)故障引起,而服务降级一般是从整体负荷考虑


管理目标的层次不太一样,熔断其实是一个框架级的处理,每个微服务都需要(无层级之分),而降级一般需要对业务有层级之分(比如降级一般是从最外围服务开始)


实现方式不太一样


服务降级要考虑的问题


  • 核心和非核心服务
  • 是否支持降级,降级策略
  • 业务放通的场景,策略

Hystrix


具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包(request collapsing),以及监控和配置等功能


如何使用,请参考以前的博文


Spring Cloud【Finchley】-08使用Hystrix实现容错

Spring Cloud【Finchley】-09Feign使用Hystrix

Spring Cloud【Finchley】-10Hystrix监控

Spring Cloud【Finchley】-11Feign项目整合Hystrix监控

Spring Cloud【Finchley】-12使用Hystrix Dashboard实现Hystrix数据的可视化监控


数据库切库分库分表


数据库的瓶颈:

  • 单个数据库数据量太大(1-2T): 对应的策略—>拆分为多个库
  • 单个数据库服务器压力太大,读写瓶颈:对应的策略—>拆分为多个库
  • 单个表数据量过大:对应的策略—>分表

切库的基础:读写分离 ( 主库/从库)

自定义注解完成数据库切库:见以前的博文

Spring Boot2.x-09 基于Spring Boot 2.1.2 + Mybatis使用自定义注解实现数据库切换

Spring Boot2.x-10 基于Spring Boot 2.1.2 + Mybatis 2.0.0实现多数据源,支持事务


高可用的一些手段


任务调度系统分布式: elastic-job + zookeeper , 请参考 elastic-job+zookeeper实现分布式定时任务调度的使用(springboot版本)

主备切换: apache curator + zookeeper 分布式锁实现 ,请参考 ZooKeeper + Curator 实现分布式锁


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
7天前
|
关系型数据库 OLAP API
非“典型”向量数据库AnalyticDB PostgreSQL及RAG服务实践
本文介绍了非“典型”向量数据库AnalyticDB PostgreSQL及其RAG(检索增强生成)服务的实践应用。 AnalyticDB PostgreSQL不仅具备强大的数据分析能力,还支持向量查询、全文检索和结构化查询的融合,帮助企业高效构建和管理知识库。
46 19
|
3天前
|
存储 关系型数据库 数据库
RDS:稳定、安全、开放的新一代云数据库服务
RDS是阿里云提供的新一代云数据库服务,具备稳定、安全、开放的特点。本次分享由阿里云智能集团和平安科技专家共同介绍,涵盖RDS年度产品发布与最佳实践、金融场景下关系型数据库的要求。重点内容包括RDS通用云盘、RDS On OSS、RDS Custom等技术创新,以及在成本控制、性能优化、业务连续性、数据安全等方面的解决方案。通过实际案例展示了RDS在不同行业的应用,如汇联易、莉莉丝游戏、中免日上等,帮助客户实现高效、低成本的数据库管理。
|
6天前
|
存储 缓存 NoSQL
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
|
6天前
|
缓存 NoSQL 关系型数据库
云端问道21期实操教学-应对高并发,利用云数据库 Tair(兼容 Redis®)缓存实现极速响应
本文介绍了如何通过云端问道21期实操教学,利用云数据库 Tair(兼容 Redis®)缓存实现高并发场景下的极速响应。主要内容分为四部分:方案概览、部署准备、一键部署和完成及清理。方案概览中,展示了如何使用 Redis 提升业务性能,降低响应时间;部署准备介绍了账号注册与充值步骤;一键部署详细讲解了创建 ECS、RDS 和 Redis 实例的过程;最后,通过对比测试验证了 Redis 缓存的有效性,并指导用户清理资源以避免额外费用。
|
1月前
|
存储 数据管理 关系型数据库
数据库分库分表的原因?
分库分表通过减少单库单表负担来提升查询性能。垂直切分按业务耦合度将表或列分布于不同库或表中,减少数据量,优化性能。水平切分则按数据逻辑关系将表分散至多库多表,减小单表数据量,实现分布式处理。选择方式需根据具体需求决定。
66 19
|
20天前
|
运维 监控 Cloud Native
云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警
在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。
47 0
|
2月前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
2月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
188 3
|
2月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
232 2
|
3月前
|
缓存 弹性计算 NoSQL
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应

热门文章

最新文章