通过Dapr实现一个简单的基于.net的微服务电商系统(十六)——dapr+sentinel中间件实现服务保护...

  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~

相关文章:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

预售┃让苹果CEO库克折服的程序员仅10岁!?

▲数据汪特别推荐点击上图进入玩酷屋在国外,编程教育课早已普及,美国、英国、新加坡等国家少儿编程已进入小学标准必修课程体系。韩国、日本也相继在2017年和2020年开展一年级至初三的编程教育普及。美国总统孙女,五岁开始学习在电脑上编程最…

IBM-X3650 6核处理器安装sql server 2005报错解决方法

1、在运行中输入msconfig2.选择BOOT.INI在高级选项3.勾选/NUMPROC,数字选择为2的n次方,点击确定4.重新启动系统后,可正常安装SQL Server 20055.安装完成后,在装sql server2005 sp4补丁后6.然后把/NUMPROC勾去掉7.重新启动后,可正常…

java 字符串小写_Java字符串如何转换大小写?

程序开发中,经常需要对字符串进行转换操作,例如将字符串转换成数组的形式,将字符串中的字符进行大小写转换等。接下来通过一个案例来演示字符串的转换操作。 public class string03 {public static void main(String[] args) {String str="abcd"; System.out.prin…

C#-using与添加引用的关系

添加引用是using的必备条件 只有添加了对程序集的引用,此程序集内的命名空间才能被using项目添加引用的目的是引入程序集 程序集的概念是什么? 程序集是一个 DLL,这是调用其中类的必备条件 一个程序集包括一个或多个命名空间 举例来说 命…

如何提高自己的工作效率

1. 对整体的项目需求的了解(建议给新入职项目成员整体介绍一下); 2. 做具体模块的时候有必要再细讲一次当前开发模块的具体内容,越详细越好(由于刚入职对整体不了解还有对新的技术有个入门过程)&#xff1b…

入门机器学习,就这么简单!

AI这个词相信大家都非常熟悉,近几年来人工智能圈子格外热闹,光是AlphoGo就让大家对它刮目相看。今天小天就来跟大家唠一唠如何进军人工智能的第一步——机器学习。在机器学习领域,Python已经成为了主流。一方面因为这门语言简单易上手&#x…

程序员过关斩将--错误的IOC和DI

什么是IOC?什么是DI?IOC和DI有什么关系?作为程序员,天天撸代码,怎么能不知道IOC和DI呢。很多面试官也喜欢问这两个概念,虽然概念很简单,但是可以从面试者的回答当中,大体的可以估算到…

java 生成jar_java如何生成jar

将*.class文件压缩成一个文件交付给用户使用,那么这样的文件就称为jar文件。如果要想生成jar文件,直接使用JDK中bin目录里的jar.exe就可以将所有的类文件进行压缩。此命令是随JDK一起安装的,直接在命令行中输入jar,即可看到此命令…

windows server 2012 dhcp 配置故障转移

在前面,青年怪客搭建的活动目录服务,在前面的内容中,我希望能在一个企业中,有一到两台域服务器可以管理我们企业内容中的计算机,但是一般的企业都是需要DHCP服务器的,为此我在前面的内容中,也配…

程序猿秃顶算工伤吗?

全世界只有3.14 % 的人关注了数据与算法之美在各个年龄段的程序猿中,70后以年龄优势遥遥领先,80后开始油腻,90后开始掉发,掉发的迅猛程度隐隐有赶超80后的趋势,脱单已然不是他们最担心的问题,脱发才是!程序…

web容器获取SSL指纹实现和ByPass

前言前段时间对SSL指纹的获取实现很感兴趣,从表面到深入再到实现让我更加深刻理解SSL设计。本篇介绍:SSL指纹在web容器(Kestrel)下如何获取,并实现一个Middleware来很方便集成到web工程里面(下文附源码地址)。解析ClientHello的套路以及如何生…

许可证( License LicenseLicenseLicenseLicenseLicense)服务器配置

在这里我要说明一下,如果你没有lic文件,可以到官方注册帐号,进行申请,我这里我申请的是一个90天的试用的序列号,下面是我在配置过程中的一些截图发出来。大家可以看一下。 老样子,开机过几秒中会提示出来的…

java struts 文件下载_Struts2文件下载实例

通过《Struts2文件下载简介》教程的学习,读者已经了解了使用 Struts2 框架实现在指定的目录中下载指定文件的功能。下面通过案例演示文件下载功能。1)创建下载页面在 struts2Demo06 项目的 WebContent 目录下创建一个名称为 download.jsp 的页面文件,在文…

预售┃16个有趣的海洋实验,美到让人窒息!

▲数据汪特别推荐点击上图进入玩酷屋我们的孩子,在科技发展迅速的年代,从出生就接触着各种高科技,接触电子产品已经是必然。但小木时常在想,除了ipad和那些普通的玩具,我们还能给孩子玩儿些什么呢?有没有宝…

深入LINQ | 揭开IQueryable的面纱

原文:bit.ly/3uAXliC作者:Jeremy Likness译者:精致码农-王亮在上一篇深入LINQ | 动态构建LINQ表达式 博文中,我们探索了表达式的强大,并用它来动态地构建一个基于 JSON 的规则引擎。在这篇文章中,我们反过来…

arcgispython脚本开发工具_06-05【求助】利用python脚本语言开发新的Arctoolbox工具

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼下面是一段python代码,要如何才能在Arctoolbox中实现呢?#-*- encoding:UTF-8 -*-#!/usr/bin/env python# Author: 谢长波# Purpose: 按字段分割要素类# Created: 2012/10/9import sysimport arcpyimport str…

51单片机实现4位数以内的加减法

中南民族大学,电子信息工程学院,开设了一门课程,叫《嵌入式电路设计》,由舒老师带头,旨在引导低年级的学生入门嵌入式,其内容比较多,包括模电、数电、C语言、单片机、EDA技术等。最近有位师弟找…

科幻作家阿西莫夫上世纪预言2019: 计算机彻底变革教育,太空移民进行中

全世界只有3.14 % 的人关注了数据与算法之美2019年必将是充满机遇与挑战的一年,一年的时间世界可能发生很大的变化。我们应该如何期待新的一年?在这,数据汪带大家重新读1983年美国作家艾萨克阿西莫夫(Isaac Asimov)对2…

6月程序员平均工资出炉,你拖后腿了吗?

据有关部门统计:6月份全国招收程序员435501人,平均工资为15052元,很多小伙伴儿纷纷感慨工资被平均了。然而6月程序员工资的中位数却是13000元,这说明什么?也许不是被平均,而是真的拖后腿了,下面…

学习爬虫限时只需9.9,还在犹豫什么?

收拾行李回老家的小天,新春福利还是要准时送到大家手上的!随着互联网的发展,google、百度等搜索引擎让我们获取信息愈加方便。Python是当今世界最热门的编程语言之一,在科研领域也发挥着强大的作用,尤其是在日常的学习…