dapr目前更新到了1.2版本,在之前4月份的时候来自阿里的开发工程师发起了一个dapr集成Alibaba Sentinel的提案,很快被社区加入到了1.2的里程碑中并且在1.2 release 相关升级文档里可以看到已经实现了对Alibaba Sentinel的支持。今天我们就讲讲我们如何通过Sentinel实现对我们接口的保护。
目录:
一、通过Dapr实现一个简单的基于.net的微服务电商系统
二、通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架讲解
三、通过Dapr实现一个简单的基于.net的微服务电商系统(三)——一步一步教你如何撸Dapr
四、通过Dapr实现一个简单的基于.net的微服务电商系统(四)——一步一步教你如何撸Dapr之订阅发布
通过Dapr实现一个简单的基于.net的微服务电商系统(五)——一步一步教你如何撸Dapr之状态管理
通过Dapr实现一个简单的基于.net的微服务电商系统(六)——一步一步教你如何撸Dapr之Actor服务
通过Dapr实现一个简单的基于.net的微服务电商系统(七)——一步一步教你如何撸Dapr之服务限流
通过Dapr实现一个简单的基于.net的微服务电商系统(八)——一步一步教你如何撸Dapr之链路追踪
通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权
通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权-百度版
通过Dapr实现一个简单的基于.net的微服务电商系统(十)——一步一步教你如何撸Dapr之绑定
通过Dapr实现一个简单的基于.net的微服务电商系统(十一)——一步一步教你如何撸Dapr之自动扩/缩容
通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格
通过Dapr实现一个简单的基于.net的微服务电商系统(十三)——istio+dapr构建多运行时服务网格之生产环境部署
通过Dapr实现一个简单的基于.net的微服务电商系统(十四)——开发环境容器调试小技巧
通过Dapr实现一个简单的基于.net的微服务电商系统(十五)——集中式接口文档实现
附录:(如果你觉得对你有用,请给个star)
一、电商Demo地址:https://github.com/sd797994/Oxygen-Dapr.EshopSample
二、通讯框架地址:https://github.com/sd797994/Oxygen-Dapr
dapr的发展确实很快,在4月份开始这个基于dapr1.0的系列在服务治理这块dapr还仅仅只能依靠基于middleware.http.ratelimit的对下游进行粗粒度的服务保护,或者基于app-max-concurrency来约束来自上游的并发数。仅仅两个小版本后dapr就通过component实现了对sentinel的支持,不得不说社区的反应速度还是很快的。那sentinel到底是个什么呢?在sentinel官网开篇的一句话简介里是这么描述的:“sentinel 是面向分布式服务架构的高可用防护组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。”,所以sentinel提供的是分布式应用四大类基本需求中之一——网络需求这块的相关部分能力。也就是微服务常见的限流、熔断降级等服务保护能力,而dapr通过模块化的component让开发者可以快速集成sentinel只需要配置不同的规则约束告知dapr sidecar即可获取相关的下游服务保护能力。sentinel组件本身成熟度也挺高的,在阿里内部广泛使用了多年,并且对 Dubbo、Spring Cloud、gRPC、Zuul、Reactor、Quarkus 等框架都做了集成,所以目前我们可以放心的使用它。
今天的案例我们简单的模拟一下使用sentinel的限流能力来对我们下游服务特定接口提供保护能力,依然使用我们目前这套电商demo来完成,由于sentinel是对下游服务进行保护,所以我们需要将相关的规则写入到我们的apigateway对应的sidecar中,这样确保来自于客户端的请求都会被正确的限制流量,接下来我们来限制一下对accountservice的accountquery/checkrolebasedaccesscontroler这个接口做流量限制,按照1秒10次的方式,component如下:
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:name: sentinelnamespace: dapreshop
spec:type: middleware.http.sentinelversion: v1metadata:- name: appNamevalue: "accountflowrule"- name: logDirvalue: "/tmp"- name: flowRulesvalue: >-[{"resource": "POST:/v1.0/invoke/accountservice/method/accountquery/checkrolebasedaccesscontroler","threshold": 10,"tokenCalculateStrategy": 0,"controlBehavior": 0}]
这条规则告诉dapr我们需要启动sentinel中间件,并且注入一条规则规定对下游资源(resource)的访问维持在10次/秒(threshold),其中流量控制器的Token计算策略(tokenCalculateStrategy)采用默认也就是以threshold作为阈值,超出的请求部分采用的策略(controlBehavior)是拒绝服务。接着我们创建一个Configuration并注入到我们的apigateway这个deployment中:
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:name: sentinelconfignamespace: dapreshop
spec:httpPipeline:handlers:- name: sentineltype: middleware.http.sentinel
apiVersion: apps/v1
kind: Deployment
metadata:name: apigatewaynamespace: dapreshop
spec:selector:matchLabels:app: apigatewayreplicas: 1template:metadata:labels:app: apigatewayversion: v1annotations:dapr.io/enabled: "true"dapr.io/app-id: "apigateway"dapr.io/app-port: "80"dapr.io/config: "sentinelconfig"
.....
接着我们apply一下将compenent注册到dapr环境中,并且重启我们的apigateway。重启完成后我们查看一下apigateway sidecar的日志可以看到配置已经正确的注入进去了并且已经成功的enabled sentinel:
接下来我们启动一个测试程序通过apigateway暴露到内网的地址来访问这个接口,其最终结果如下:
可以看到sentinel成功的完成了对接口的保护工作,将我们的接口请求频率维持在了10次/秒的基础上。好了,今天的分享就到这里,照例欢迎转发 fork + star~
相关文章:
Dapr能否引领云原生中间件的未来?
云原生 | 阿里巴巴的Dapr实践与探索
Dapr | 云原生的抽象与实现
Dapr 可视化指南
Dapr 知多少 | 分布式应用运行时
Dapr 正式发布 1.0
Dapr 交通流量控制示例
Dapr是如何简化微服务的开发和部署
微软开源微服务运行时Dapr,赋能云原生应用开发
YARP实现Dapr服务调用的反向代理
Dapr微服务应用开发系列0:概述
Dapr微服务应用开发系列1:环境配置
Dapr微服务应用开发系列2:Hello World与SDK初接触
Dapr微服务应用开发系列3:服务调用构件块
Dapr微服务应用开发系列4:状态管理构件块
Dapr微服务应用开发系列5:发布订阅构建块
Windows环境下Dapr入门
云原生 | .NET 5 with Dapr 初体验
通过Dapr实现一个简单的基于.net的微服务电商系统
通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架讲解
通过Dapr实现一个简单的基于.net的微服务电商系统(三)——一步一步教你如何撸Dapr
通过Dapr实现一个简单的基于.net的微服务电商系统(四)——一步一步教你如何撸Dapr之订阅发布
通过Dapr实现一个简单的基于.net的微服务电商系统(五)——一步一步教你如何撸Dapr之状态管理
通过Dapr实现一个简单的基于.net的微服务电商系统(六)——一步一步教你如何撸Dapr之Actor服务
通过Dapr实现一个简单的基于.net的微服务电商系统(七)——一步一步教你如何撸Dapr之服务限流
通过Dapr实现一个简单的基于.net的微服务电商系统(八)——一步一步教你如何撸Dapr之链路追踪
通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权
通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权-百度版
通过Dapr实现一个简单的基于.net的微服务电商系统(十)——一步一步教你如何撸Dapr之绑定
通过Dapr实现一个简单的基于.net的微服务电商系统(十一)——一步一步教你如何撸Dapr之自动扩/缩容
通过Dapr实现一个简单的基于.net的微服务电商系统(十三)——istio+dapr构建多运行时服务网格之生产环境部署
通过Dapr实现一个简单的基于.net的微服务电商系统(十五)——集中式接口文档实现
WebAssembly + Dapr = 下一代云原生运行时?
dapr 应用开发 | 环境配置
乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时
Dapr案例之高德 Serverless 平台建设及实践
在非容器(集群)环境下运行dapr
构建属于你自己的dapr服务发现
构建属于你自己的dapr绑定组件