grpc断路器之sentinel 荐
背景
为了防止下游服务雪崩,这里考虑使用断路器
技术选型
由于是springboot服务且集成了istio,这里考虑三种方案
- istio
- hystrix
- sentinel
这里分别有这几种方案的对比
首先考虑的是istio,但是在使用istio进行熔断、分流时,流量不稳定,并且返回状态以及数据达不到预取效果,后面考虑到sentinel自动集成了grpc,所以这里使用sentinel。
步骤
1、增加相关依赖
 <dependencies>
  <dependency>
           <groupid>com.alibaba.cloud</groupid>
           <artifactid>spring-cloud-starter-alibaba-sentinel</artifactid>
       </dependency>
       <dependency>
           <groupid>com.alibaba.csp</groupid>
           <artifactid>sentinel-grpc-adapter</artifactid>
           <version>1.7.1</version>
       </dependency>
   </dependencies>
<dependencymanagement>
       <dependencies>
           <dependency>
               <groupid>com.alibaba.cloud</groupid>
               <artifactid>spring-cloud-alibaba-dependencies</artifactid>
               <version>2.0.1.RELEASE</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
          </dependencies>
   </dependencymanagement>
2、增加配置类
方案一:增加全局拦截器
/**
 * @Auther: lipeng
 * @Date: 2020/3/23 17:24
 * @Description:
 */
@Order(Ordered.LOWEST_PRECEDENCE)
@Configuration
@Slf4j
public class SentinelConfig {
    @Bean
    public ClientInterceptor sentinelGrpcClientInterceptor(){
        return new SentinelGrpcClientInterceptor();
    }
    @Bean
    public GlobalClientInterceptorConfigurer globalInterceptorConfigurerAdapter(ClientInterceptor sentinelGrpcClientInterceptor) {
        return registry -> registry.addClientInterceptors(sentinelGrpcClientInterceptor);
    }
}
方案二:调用时增加拦截器
当然这里也可以换一种方式增加拦截器,如下,在启动类中增加
@Bean
    public ClientInterceptor sentinelGrpcClientInterceptor(){
        return new SentinelGrpcClientInterceptor();
    }
然后在调用类中增加依赖
    @Autowired
    private ClientInterceptor sentinelGrpcClientInterceptor;
   public void doXXX(){
         XXXGrpc.XXXBlockingStub stub = XXXGrpc.newBlockingStub(serverChannel).withInterceptors(sentinelGrpcClientInterceptor);
         XXXApi.XXXResponse response = stub.withDeadlineAfter(grpcTimeout, TimeUnit.MILLISECONDS).doXXX(request);
}
3、增加sentinel dashboard配置
spring:
  cloud:
    sentinel:
      transport:
        port: 8719
        dashboard: localhost:7080
4、部署sentinel dashboard
部署参考下面链接:
启动后访问下相关链接,grpc自动集成上去了,效果如下:


详细配置可以参考官方wiki:https://github.com/alibaba/Sentinel/wiki/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8
grpc断路器之sentinel 荐的更多相关文章
- SpringCloud 断路器之Hystrix
		Hystrix-断路器 在分布式环境中,许多服务依赖项中的一些必然会失败.Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助你控制这些分布式服务之间的交互.Hystrix通过隔离服务之间的访问点 ... 
- 5w 字 | 172 图 | 超级赛亚级 Spring Cloud 实战
		一.PassJava 项目简介 PassJava-Learning 项目是 PassJava(佳必过)项目的学习教程.对架构.业务.技术要点进行讲解. PassJava 是一款 Java 面试刷题 的 ... 
- 微服务架构 | 5.4 Sentinel 流控、统计和熔断的源码分析
		目录 前言 1. Sentinel 的自动装配 1.2 依赖引入 1.3 SentinelWebAutoConfiguration 配置类 1.4 CommonFilter 过滤器 1.5 小结 2. ... 
- Sentinel介绍与使用 收藏起来
		点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你,很高兴能够成为你的朋友. 项目源码地址:公众号回复 sentinel,即可免费获取源码 前言 在家休息的的时候,突然小勇打 ... 
- Sentinel 介绍与下载使用
		sentinel 前方参考 计算QPS-Sentinel限流算法 https://www.cnblogs.com/yizhiamumu/p/16819497.html Sentinel 介绍与下载使用 ... 
- alibaba/Sentinel  分布式 系统流量防卫兵
		Sentinel: 分布式系统的流量防卫兵 Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多 ... 
- Sentinel限流示例:编码和注解限流
		一.Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度保护服务的稳定性. Sentine ... 
- Spring Cloud Alibaba | Sentinel: 分布式系统的流量防卫兵初探
		目录 Spring Cloud Alibaba | Sentinel: 分布式系统的流量防卫兵初探 1. Sentinel 是什么? 2. Sentinel 的特征: 3. Sentinel 的开源生 ... 
- Spring Cloud Alibaba | Sentinel: 服务限流基础篇
		目录 Spring Cloud Alibaba | Sentinel: 服务限流基础篇 1. 简介 2. 定义资源 2.1 主流框架的默认适配 2.2 抛出异常的方式定义资源 2.3 返回布尔值方式定 ... 
- 限流降级神器,带你解读阿里巴巴开源 Sentinel 实现原理
		Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来帮助用户保护服务的稳定性. 大家可能会问:Se ... 
随机推荐
- windows系统安装或使用inspect.exe工具
			确认是否安装? 结合工具everything,进行搜索 选择对应操作系统的版本,右键->选择打开路径,进到inspect.exe的安装路径,双击打开软件 软件开启后,就会自动开始抓取目前软件界面 ... 
- MYSQL8-快速生成表结构(用于生成文档)
			各种工具都有,没有特别趁手的.不如自己用sql处理. SELECT column_name AS CODE, CASE WHEN column_comment IS NULL OR TRIM(colu ... 
- 浮点数格式:FP64, FP32, FP16, BFLOAT16, TF32之间的相互区别
			浮点数格式 (参考1,参考2) 浮点数是一种用二进制表示的实数,它由三个部分组成:sign(符号位).exponent(指数位)和fraction(小数位).不同的浮点数格式有不同的位数分配给这三个部 ... 
- 韦东山freeRTOS系列教程之【第八章】事件组(event group)
			目录 系列教程总目录 概述 8.1 事件组概念与操作 8.1.1 事件组的概念 8.1.2 事件组的操作 8.2 事件组函数 8.2.1 创建 8.2.2 删除 8.2.3 设置事件 8.2.4 等待 ... 
- Docker部署JavaWeb项目(Tomcat环境)
			一.环境准备 1.首先准备一台Centos 7的虚拟机并安装Docker. 2.准备好Tomcat.JDK的安装包以及该java项目的war包. 二.编写Dockerfile Dockerfile是一 ... 
- 搜索Python编程获取相关图书信息
			1.获取相关图书信息 #搜索"Python编程"获取相关图书信息 from selenium import webdriver from selenium.webdriver.su ... 
- LeViT:Facebook提出推理优化的混合ViT主干网络 | ICCV 2021
			论文提出了用于快速图像分类推理的混合神经网络LeVIT,在不同的硬件平台上进行不同的效率衡量标准的测试.总体而言,LeViT在速度/准确性权衡方面明显优于现有的卷积神经网络和ViT,比如在80%的Im ... 
- TypeScript 学习笔记 — 交叉类型、条件类型和条件分发(八)
			目录 交叉类型 条件类型 1. 直接传入判断的条件 2. 把条件当成泛型传入 3. 多重条件判断 4. 判断接口中的类型 extends 父子关系(类型等级) 条件分发机制 实际开发中如何避免? &l ... 
- [oeasy]python001_先跑起来_python_三大系统选择_windows_mac_linux
			先跑起来 Python 什么是 Python? Python [ˈpaɪθɑ:n] 是 一门 适合初学者 的编程语言 添加图片注释,不超过 140 字(可选) 类库 众多 几行代码 就 ... 
- Pandas库学习笔记(6) -- Pandas 基本方法
			Pandas 基本方法实例 到目前为止,我们了解了三个Pandas DataStructures以及如何创建它们.由于它在实时数据处理中的重要性,因此我们将主要关注DataFrame对象,并讨论其他一 ... 
