hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

Spring Cloud alibaba网关 sentinel zuul 四 限流熔断

2019-11-18杂谈搜奇网28°c
A+ A-

spring cloud alibaba 集成了 他内部开源的 Sentinel 熔断限流框架

Sentinel 引见

官方网址
跟着微效劳的盛行,效劳和效劳之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量掌握、熔断降级、体系负载庇护等多个维度庇护效劳的稳定性。

Sentinel 具有以下特征:

  • 雄厚的运用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的中心场景,比方秒杀(即突发流量掌握在体系容量能够蒙受的局限)、音讯削峰填谷、集群流量掌握、及时熔断下流不可用运用等。
    完整的及时监控:Sentinel 同时供应及时的监控功用。您能够在掌握台中看到接入运用的单台机械秒级数据,以至 500 台以下范围的集群的汇总运转状况。
  • 普遍的开源生态:Sentinel 供应开箱即用的与别的开源框架/库的整合模块,比方与 Spring Cloud、Dubbo、gRPC 的整合。您只须要引入响应的依靠并举行简朴的设置即可疾速地接入 Sentinel。
  • 完美的 SPI 扩大点:Sentinel 供应简朴易用、完美的 SPI 扩大接口。您能够经由过程完成扩大接口来疾速地定制逻辑。比方定制划定规矩治理、适配动态数据源等。

Sentinel 的重要特征:

Sentinel 的开源生态:

引见一下 假如搭建。本次并不会一点点延长更深条理的处所。只教人人疾速运用。等spring cloud gateway更新完成之后会带人人更深条理的发掘 Sentinel 的功用。

Sentinel的疾速搭建

直接下载官网已打好的jar包

release地点 https://github.com/alibaba/Sentinel/releases

源码编译
git clone https://github.com/alibaba/Sentinel.git

然后进入目次实行 mvn clean package

敕令启动

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

假如须要docker 的话 可编写 docker Dockerfile

# 基于哪一个镜像
FROM java:8
# 拷贝文件到容器,也能够直接写成ADD microservice-discovery-eureka-0.0.1-SNAPSHOT.jar /app.jar
ADD ./*.jar app.jar
RUN mkdir -p /var/logs/Sentinel
RUN mkdir -p /var/logs/jvm
RUN mkdir -p /var/logs/dump
RUN bash -c 'touch /app.jar'
# 开放8080端口
EXPOSE 8080
# 设置容器启动后实行的敕令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-XX:-PrintGCDetails","-XX:-PrintGCTimeStamps","-XX:-HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=/var/logs/dump/oom_dump.dump","-Xloggc:/var/logs/jvm/app.log","-Dfile.encoding=UTF8","-Duser.timezone=GMT+08","-XX:CMSInitiatingOccupancyFraction=90","-XX:MaxGCPauseMillis=200","-XX:StringTableSize=20000","-XX:+UseG1GC","-Xss256k","-Xmx1024m","-Xms512m","-jar","/app.jar"]

实行 docker 镜像制造

docker  build --tag sentinel:1.0 .

--tag projectname:version 注重写法


然后docker run 启动镜像。这里作者运用的docker镜像体式格局启动
docker run -d -p9088:8080 304342c105e9

然后掌握台输入 http://localhost:9088/ 用户名暗码 sentinel/sentinel

登录参数设置:

从 Sentinel 1.6.0 起,Sentinel 掌握台引入基础的登录功用,默许用户名和暗码都是 sentinel。能够参考 鉴权模块文档 设置用户名和暗码。

  • Dsentinel.dashboard.auth.username=sentinel 用于指定掌握台的登录用户名为 sentinel;
  • Dsentinel.dashboard.auth.password=123456 用于指定掌握台的登录暗码为 123456;假如省略这两个参数,默许用户和暗码均为 sentinel;
  • Dserver.servlet.session.timeout=7200 用于指定 Spring Boot 效劳端 session 的逾期时刻,如 7200 示意 7200 秒;60m 示意 60 分钟,默许为 30 分钟;

输入暗码登录

效劳已启动我们在整合 网关zuul 效劳于sentinel的整合。

pom 增加

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

操纵增加俩个文件在resources下面

  • api.json
[
  {
    "apiName": "cloud-discovery-server",
    "predicateItems": [
      {
        "pattern": "/server/**"
      },
      {
        "pattern": "/server/server/**",
        "matchStrategy": 1
      },
      {
        "items": [
          {
            "pattern": "/server/**"
          }
        ]
      }
    ]
  },
  {
    "apiName": "cloud-discovery-client",
    "predicateItems": [
      {
        "pattern": "/client/**"
      }
    ]
  }
]

启动效劳并举行之前的一次接见

  • gateway.json
[
  {
    "resource": "cloud-discovery-server",
    "count": 1
  },
  {
    "resource": "cloud-discovery-client",
    "count": 10,
    "intervalSec": 2,
    "controlBehavior": 1,
    "maxQueueingTimeoutMs": 200,
    "paramItem": {
      "parseStrategy": 3,
      "fieldName": "test"
    }
  }
]

屡次要求 curl http://localhost:9083/server/server/hello?name=tom

然后在掌握台

api.json 对应的是掌握台 api 治理

用户自定义的 API 定义分组,能够看作是一些 URL 婚配的组合。比方我们能够定义一个 API 叫 my_api,要求 path 形式为 /foo/** 和 /baz/** 的都归到 my_api 这个 API 分组下面。限流的时刻能够针对这个自定义的 API 分组维度举行限流。

gateway 对应的是掌握台流控治理

  • resource:资本称号,能够是网关中的 route 称号或许用户自定义的API 分组称号。
  • resourceMode:划定规矩是针对 API Gateway 的route(RESOURCE_MODE_ROUTE_ID)照样用户在 Sentinel 中定义的API 分组(RESOURCE_MODE_CUSTOM_API_NAME),默许是route。
  • grade:限流目标维度,同限流划定规矩的grade 字段。
  • count:限流阈值
  • intervalSec:统计时刻窗口,单元是秒,默许是1 秒(现在仅对参数限流见效)。
  • controlBehavior:流量整形的掌握结果,同限流划定规矩的 controlBehavior 字段,现在支撑疾速失利和匀速列队两种形式,默许是疾速失利。
  • burst:应对突发要求时分外许可的要求数量(现在仅对参数限流见效)。
  • maxQueueingTimeoutMs:匀速列队形式下的最长列队时刻,单元是毫秒,仅在匀速列队形式下见效。
  • paramItem:参数限流设置。若不供应,则代表不针对参数举行限流,该网关划定规矩将会被转换成普通流控划定规矩;否则会转换成热门划定规矩。个中的字段:
  • parseStrategy:从要求中提取参数的战略,现在支撑提取泉源 IP(PARAM_PARSE_STRATEGY_CLIENT_IP)、
  • Host(PARAM_PARSE_STRATEGY_HOST)、恣意 Header(PARAM_PARSE_STRATEGY_HEADER)和恣意 URL 参数(PARAM_PARSE_STRATEGY_URL_PARAM)四种形式。
  • fieldName:若提取战略挑选 Header 形式或 URL 参数形式,则须要指定对应的 header 称号或 URL 参数称号。
  • pattern 和 matchStrategy:为后续参数婚配特征预留,现在未完成。

其实在掌握台上 能够看到要求链路、另有流量划定规矩。编辑的位置,都能婚配这是种种的组合设置。由于Sentinel 是阿里巴巴开源的流控框架。异常简朴有用。文档也异常周全,强烈推荐能本身去官网进修这些材料。我这里只是做一个简朴的整合。

Sentinel 以流量为切入点,从流量掌握、熔断降级、体系负载庇护等多个维度庇护效劳的稳定性。

怎样喜好能够关注分享本民众号。

版权声明:本文为博主原创文章,遵照 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接和本声明。转载请附带民众号二维码

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
Spring Cloud alibaba网关 sentinel zuul 四 限流熔断

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282268.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>