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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
校招面经丨蚂蚁OceanBase程序媛杨琪:飙最野的车,写最棒的代码
OceanBase持续招聘中,本期特别嘉宾是来自OceanBase存储组的开发工程师——杨琪。如果你也想加入OB大家庭,欢迎发送简历到OceanBase-Public@list.alibaba-inc.com,我们等的就是你! 杨琪是蚂蚁金服OceanBase存储组的一名开发工程师。2019年她通过校招内推加入蚂蚁,此时此刻,她已与蚂蚁相伴261天。 关于校招,杨琪有不少心得和经验想告诉即将参加校招的小伙伴,她希望这篇校招面试经验帖可以将自己的所经所感分享给每一个有机会进入蚂蚁的小伙伴,愿他们终能走往自己想去的方向,去到自己想去的地方。 在蚂蚁,很多年轻人能感受到蚂蚁“大学”式的团队风格,它似乎能给来到这里的年轻人一种“高等技术继续教育”的幸福感和充实感,又像是把大学四年的“理论式大学”变成了社会型“实践式大学”。 不想浪费一身的编程武功,所以选择蚂蚁的OB 和很多即将毕业的应届生一样,我也在即将踏入社会大海时迷茫不知前路走向何方。是去银行亦或者事业单位?还是跻身互联网?是做技术还是运营?是前端还是后端?想追逐最前沿的业务还是想探究技术的深度? 彼时的我非常迷茫,最大的问题是“不知道自...
- 下一篇
PHP-Casbin v2.1.3 发布,这个谷歌编程之夏(GSoC)期待您的加入!
PHP-Casbinv2.1.3 发布了,PHP-Casbin是一个用 PHP 语言打造的轻量级开源访问控制框架,支持 ACL、RBAC、ABAC 多种模型。它采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于属性的访问控制 ABAC 等。 更新内容: https://github.com/php-casbin/php-casbin/releases Casbin 开源项目介绍 Casbin 是一个强大的、高效的开源访问控制框架。涉及到 Go、Java、Node.js、Javascript (React)、Python、PHP、.NET、Delphi、Rust 等多种语言。Casbin 由北京大学罗杨博士创立于 2017 年,核心维护团队有数十人。2020 年被 Google 选入 GSoC,成为入选的 200 个开源项目之一,也是今年 30 个首次入选的项目之一。 Google Summer of Code 介绍 Google Summer of Code(GSoC,即 Google 编程之夏)是 Google(谷歌)组织并提供经费,面对全球在读...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器