小麦带你学服务治理八

简介: 跟着小麦不迷路

## 服务限流降级熔断


先来讲讲微服务中限流/熔断的目的是什么,微服务后,系统分布式部署,系统之间通过rpc框架通信,整个系统发生故障的概率随着系统规模的增长而增长,一个小的故障经过链路的传递放大,有可能会造成更大的故障。


限流跟高可用的关系是什么,假定我们的系统最多只能承受500个人的并发访问,但整个时候突然增加到1000个人进来,一下子就把整个系统给压垮了,本来还有500个人能享受到我们系统的服务,突然间变成了所有人都无法得到服务,与其让1000人都不法得到服务,不如就让500个人得到服务,拒绝掉另外500个人。限流是对访问的隔离,是保证了部门系统承受范围内用户的可用性。


熔断跟高可用的关系是什么,上面说了微服务是一个错综复杂的调用链关系,假设 模块A 调用 模块B , 模块B 又调用了 模块C , 模块C 调用了 模块D,这个时候,模块D 出了问题出现严重的时延,这个时候,整个调用链就会被 模块D 给拖垮,A 等B,B等C,C等D,而且A B C D的资源被锁死得不到释放,如果流量大的话还容易引起雪崩。熔断,主动丢弃 模块D 的调用,并在功能上作出一些降级才能保证到我们系统的健壮性。 熔断是对模块的隔离,是保证了最大功能的可用性。




## 服务治理


### 服务模块划分


服务模块与服务模块之间有着千丝万缕的关系,但服务模块在业务中各有权重,例如订单模块可能是一家电商公司的重中之重,如果出问题将会直接影响整个公司的营收,而一个后台的查询服务模块可能也重要,但它的重要等级绝对是没有像订单这么重要。所以,在做服务治理时,必须明确各个服务模块的重要等级,这样才能更好的做好监控,分配好资源。这个在各个公司有各个公司的一个标准,例如在电商公司,确定服务的级别可能会更加倾向对用用户请求数和营收相关的作为指标。


| 服务级别 | 服务模块                                               |

| -------- | ------------------------------------------------------ |

| 一级服务 | 支付系统 订单服务 商品服务 用户服务 发布系统 ...       |

| 二级服务 | 消息服务 权限系统 CRM系统 积分系统 BI系统 评论系统 ... |

| 三级服务 | 后台日志系统                                           |


可能真正的划分要比这个更为复杂,必须根据具体业务去定,这个可以从平时服务模块的访问量和流量去预估,往往更重要的模块也会提供更多的资源,所以不仅要对技术架构了如指掌,还要对公司各种业务形态了然于心才可以。


服务分级不仅仅在故障界定起到重要主要,而且决定了服务监控的力度,服务监控在高可用中起到了一个保障的作用,它不仅可以保留服务奔溃的现场以等待日后复盘,更重要的是它可以起到一个先知,先行判断的角色,很多时候可以预先判断危险,防范于未然。

相关文章
|
Java 开发工具 开发者
IDEA中配置类与方法注释模板
IDEA是当前使用最为广泛的集成开发工具之一,其功能的多样性与便捷性为开发者在开发过程提供了很多方便。 我们在用IDEA创建java类和方法的时候,可以自动生成文档注释,便于代码的阅读与理解。
IDEA中配置类与方法注释模板
|
JavaScript
Nodejs的模块化概述
详细解释Node.js的模块化概念,包括CommonJS规范、模块的引用、定义、标识,以及如何在Node.js中实现模块化,并通过示例代码展示了如何创建和使用模块,以及"module.exports"和"exports"的区别。
143 1
Nodejs的模块化概述
|
Docker 容器
求助: 运行模型时报错module 'megatron_util.mpu' has no attribute 'get_model_parallel_rank'
运行ZhipuAI/Multilingual-GLM-Summarization-zh的官方代码范例时,报错AttributeError: MGLMTextSummarizationPipeline: module 'megatron_util.mpu' has no attribute 'get_model_parallel_rank' 环境是基于ModelScope官方docker镜像,尝试了各个版本结果都是一样的。
573 5
|
机器学习/深度学习 数据采集 数据可视化
使用Python实现深度学习模型:智能交通信号优化
使用Python实现深度学习模型:智能交通信号优化
549 9
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用问题之提示已存在,但是创建任务的时候,只能到项目、迭代,不能关联到需求,是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
11月前
|
Java API
Java中内置的函数式接口
Java中内置的函数式接口
138 2
|
Java
如何自定义异常类
如何自定义异常类
100 0
|
NoSQL 关系型数据库 MySQL
简述redis的单线程模式
简述redis的单线程模式
167 0
|
搜索推荐 Java 大数据
Java实现冒泡排序
Java实现冒泡排序
107 0
|
存储 设计模式 缓存
这45个小技巧,让你的代码突然又优雅了2
这45个小技巧,让你的代码突然又优雅了2
这45个小技巧,让你的代码突然又优雅了2