Sentinel系列——概述与安装1-1
- 概述
- 服务雪崩
- 解决方法
- 基本概念
- 资源
- 规则
- Sentinel 是如何工作的
- 安装Sentinel
- 下载地址
- 启动
- 修改sentinel启动参数
- 设置启动端口
- 设置用户名密码
概述
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
服务雪崩
微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路:
一次业务请求,需要调用A、P、H、I四个服务,这四个服务又可能调用其它服务。
微服务I发生异常,请求阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞,服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。
解决方法
- 超时处理:设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待
- 舱壁模式:限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。
- 熔断降级∶由断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。
- 流量控制:限制业务访问的QPS,避免服务因流量的突增而故障。
基本概念
资源
资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在接下来的文档中,我们都会用资源来描述代码块。
只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。
规则
围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。
Sentinel 是如何工作的
Sentinel 的主要工作机制如下:
- 对主流框架提供适配或者显示的 API,来定义需要保护的资源,并提供设施对资源进行实时统计和调用链路分析。
- 根据预设的规则,结合对资源的实时统计信息,对流量进行控制。同时,Sentinel 提供开放的接口,方便您定义及改变规则。
- Sentinel 提供实时的监控系统,方便您快速了解目前系统的状态。
安装Sentinel
下载地址
https://github.com/alibaba/Sentinel
可以直接点jar包链接获取1.8.6版本jar包
jar包链接
启动
java -jar .\sentinel-dashboard-1.8.6.jar
我们直接访问http://localhost:8080
账号:sentinel
密码:sentinel
修改sentinel启动参数
文档地址:https://sentinelguard.io/zh-cn/docs/dashboard.html
设置启动端口
设置server.port
java -jar .\sentinel-dashboard-1.8.6.jar -Dserver.port=8888
设置用户名密码
设置sentinel.dashboard.auth.username
和sentinel.dashboard.auth.password
java -jar .\sentinel-dashboard-1.8.6.jar -Dsentinel.dashboard.auth.username=wangwu