前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sentinel 1.7.0 发布,支持 Envoy 集群流量控制

Sentinel 1.7.0 发布,支持 Envoy 集群流量控制

作者头像
heidsoft
发布2019-12-03 13:01:45
1K0
发布2019-12-03 13:01:45
举报

流控降级中间件 Sentinel 1.7.0 版本正式发布,引入了 Envoy 集群流量控制支持、properties 文件配置、Consul/Etcd/Spring Cloud Config 动态数据源适配等多项新特性与改进。详细特性列表请参考 Release Notes,欢迎大家使用并提出建议。

Sentinel 1.7.0 版本参考:

https://github.com/alibaba/Sentinel/releases/tag/1.7.0

下面我们来一起探索一下 Sentinel 1.7.0 的重要特性。

Envoy 集群流量控制

Envoy 目前广泛用作 Service Mesh 的数据平面,作为 sidecar 承担路由和流量转发等任务。在 Service Mesh 中集群流量控制是保障整个集群稳定性必不可少的一环,因此 Sentinel 1.7.0 提供了 Envoy Global Rate Limiting gRPC Service 的实现 —— Sentinel RLS token server,借助 Sentinel 集群限流 token server 来为 Envoy 服务网格提供集群流量控制的能力。

Envoy 详情参考:

https://www.envoyproxy.io/

Envoy Global Rate Limiting gRPC 详情参考:

https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/other_features/global_rate_limiting

Sentinel RLS token server 详情参考:

https://github.com/alibaba/Sentinel/tree/master/sentinel-cluster/sentinel-cluster-server-envoy-rls

Envoy RLS Sentinel overview


用户只需要拉起 Sentinel RLS token server 实例并配置集群流控规则,然后在 Envoy 中进行相应的配置即可快速接入 Sentinel 的集群限流。集群流控规则项与 Envoy 的 rate limit action 生成的 descriptor 相对应,支持 source_cluster、destination_cluster、request_headers、remote_address、generic_key 等几种策略(支持组合)。示例规则项:

rate limit action 详情参考:

https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/route/route.proto#envoy-api-msg-route-ratelimit

代码语言:javascript
复制
domain: foo
descriptors:
  - resources:
    - key: "destination_cluster"
      value: "service_aliyun"
    count: 1
  - resources:
    - key: "remote_address"
      value: "30.40.50.60"
    count: 10

上面的示例配置了两条规则,针对的 domain 都是 foo(与 Envoy 的配置相对应),其中一条规则会对所有目标为 service_aliyun 集群的请求进行控制,QPS 最大为 1;另一条规则控制所有来源 IP 为 30.40.50.60 的请求每秒不超过 10 次。

我们提供了 Sentinel RLS token server 在 Kubernetes 环境的示例,方便大家在 K8s 集群中快速体验 Sentinel 集群限流的能力。

Sentinel RLS token server 在 Kubernetes 环境的示例,详情参考:

https://github.com/alibaba/Sentinel/tree/master/sentinel-cluster/sentinel-cluster-server-envoy-rls/sample/k8s

在后续的版本我们还会改进规则动态配置的方式,支持 Kubernetes CRD 的形式配置规则,同时结合 Sentinel C++ 版本提供原生的 Envoy Filter。未来我们还会提供 Istio 的支持,让 Sentinel 在 Service Mesh 中发挥更为重要的作用。

Sentinel C++ 详情参考:

https://github.com/alibaba/sentinel-cpp

properties 文件配置支持


Sentinel 1.7.0 优化了加载启动配置项的方式,支持将配置项直接配置在 properties 文件中。用户只需要通过 -Dcsp.sentinel.config.file 参数配置 properties 文件的路径即可,从而简化了通用配置的方式。

Sentinel 1.7.0 优化了加载启动配置项的方式,详情参考:

https://github.com/alibaba/Sentinel/wiki/%E5%90%AF%E5%8A%A8%E9%85%8D%E7%BD%AE%E9%A1%B9

动态数据源适配


Sentinel 1.7.0 新增了以下三种动态数据源的支持,用户可以利用这些动态数据源保存、拉取规则:

  • Etcd 数据源

https://github.com/alibaba/Sentinel/tree/master/sentinel-extension/sentinel-datasource-etcd

  • Consul 数据源

https://github.com/alibaba/Sentinel/tree/master/sentinel-extension/sentinel-datasource-consul

  • Spring Cloud Config 数据源

https://github.com/alibaba/Sentinel/tree/master/sentinel-extension/sentinel-datasource-spring-cloud-config

至此,Sentinel 已经支持了七种常用的配置中心,可以覆盖大部分的规则推送场景。

Start hacking


值得注意的是,Sentinel 1.7.0 有近一半的特性都是由社区开发者贡献的,许多的特性都是社区里面进行充分讨论和 review 后出炉的,因此我们可以称 Sentinel 1.7.0 是一个社区一起定义的版本。我们非常欢迎大家持续参与社区贡献,一起来参与未来版本的演进。若您有意愿参与社区贡献,可以参考贡献指南来入门,同时也欢迎联系我们加入 Sentinel 核心贡献小组认领任务。积极参与贡献的开发者我们会重点关注,有机会被提名为 Committer。Now start hacking

贡献指南详情参考:

https://github.com/alibaba/Sentinel/issues/391

作者信息:

赵奕豪,花名宿何,GitHub ID @sczyh30,阿里云高可用架构团队高级开发工程师,Sentinel 开源负责人,阿里云 AHAS 核心开发。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云数智圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Envoy 集群流量控制
  • Envoy RLS Sentinel overview
  • properties 文件配置支持
  • 动态数据源适配
  • Start hacking
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档