| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Alibaba微服务组件Sentinel -> 正文阅读 |
|
[Java知识库]Alibaba微服务组件Sentinel |
Alibaba微服务组件Sentinel1.分布式系统遇到的问题服务的可用性问题? 提供系统可用性的关键是在相关组件失效情况下,系统能多快恢复并继续正确提供服务。当服务器挂掉的时候首先想到什么原因? 1,激增流量打卡 2,被其他服务拖垮 3,异常没有处理 说白了:系统缺乏高可用防护/容错机制尤其是针对流量的防护。 科补: 在系统的高可靠性性里有个衡量可靠性的标准—X个9 (X是代表数字3~5)。X个9表示在系统1年时间的使用过程中,系统可以正常使用时间与总时间(1年)之比
参考: 微服务的可用性场景在一个高度服务化的系统中,我们实现一个业务逻辑通常会依赖多个服务,如果一个服务挂了,并且没有对它进行容错处理的话,有可能造成整个系统的服务雪崩的问题。 原理:如果其中的一个单服务不可用, 就会出现线程池里所有线程都因等待响应而被阻塞, 从而造成整个服务链路不可用, 进而导致整个系统的服务雪崩. 服务雪崩效应:因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程,就叫服务雪崩效应 导致服务不可用的原因: 在服务提供者不可用的时候,会出现大量重试的情况:用户重试、代码逻辑重试,这些重试最终导致:进一步加大请求流量。所以归根结底导致雪崩效应的最根本原因是:大量请求线程同步等待造成的资源耗尽。当服务调用者使用同步调用时, 会产生大量的等待线程占用系统资源。一旦线程资源被耗尽,服务调用者提供的服务也将处于不可用状态, 于是服务 2.解决方案稳定性(Reliability),恢复性(Resilience) 常见的容错机制超时机制:在不做任何处理的情况下,服务提供者不可用会导致消费者请求线程强制等待,而造成系统资源耗尽。加入超时机制,一旦超时,就释放资源。由于释放资源速度较快,一定程度上可以抑制资源耗尽的问题。 服务限流注:QPS : 每一秒的访问量 常见的限流算法: 1)令牌桶 令牌桶算法是一个存放固定容量令牌的桶,按照固定速率往桶里添加令牌。可以控制流量也可以控制并发量,假如我们想要控制 API 网关的并发量最高为 1000,可以创建一个令牌桶,以固定的速度往桶里添加令牌,超出了 1000 则不添加。 当一个请求到达之后就从桶中获取一个令牌,如果能获取到令牌就可以继续往下请求,获取不到就说明令牌不够,并发量达到了最高,请求就被拦截。 2)漏桶 漏桶是一个固定容量的桶,按照固定的速率流出,可以以任意的速率流入到漏桶中,超出了漏桶的容量就被丢弃,总容量是不变的。但是输出的速率是固定的,无论你上面的水流入的多快,下面的出口只有这么大,就像水坝开闸放水一样 隔离? 原理:用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,则会进行降级处理,用户的请求不会被阻塞,至少可以看到一个执行结果(例如返回友好的提示信息),而不是无休止的等待或者看 隔离前: 隔离后: 信号隔离: 服务熔断远程服务不稳定或网络抖动时暂时关闭,就叫服务熔断。 当一个服务挂了的情况下,有可能导致整个调用链路出现级联故障,进而导致服务雪崩,这个时候就可以在服务的消费端设置一个熔断机制,当我们去调用一个服务提供者持续没有相应或者持续的异常的时候我们就可以针对这个服务熔断(停止访问)。 例如:我们设置了超时时间为1s,如果短时间内有大量请求在1s内都得不到响应,就意味着这个服务出现了异常,此时就没有必要再让其他的请求去访问这个依赖了,这个时候就应该使用断路器避免资源浪费。 服务降级所谓降级,就是当某个服务熔断之后,服务将不再被调用,此时客户端可以自己准备一个本地的fallback(回退)回调,返回一个缺省值。 例如:(备用接口/缓存/mock数据) 。这样做,虽然服务水平下降,但好歹可用,比直接挂掉要强,当 3.Sentinel: 分布式系统的流量防卫兵Sentinel 是什么?随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征:
Sentinel 的主要特性: Sentinel 的开源生态: Sentinel 分为两个部分:
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel和Hystrix对比4.Sentinel快速开始贴上官方文档:点击 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 3:18:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |