Overview

Roadmap 时间点:

版本Milestone主要特性
✅0.2.02018.9异步调用支持、热点参数限流、黑白名单功能
✅1.4.02018.12集群限流(基础版)
✅1.5.02019.3Reactive 支持(RxJava / Reactor)
✅1.6.02019.4API Gateway 流控
✅C++ V12019.6Sentinel C++ 基础功能(统计、流控、监控)
✅1.7.02019.11Service Mesh 初步支持
✅Go 0.1.02020.2首个 Go 版本
✅Go 0.3.02020.5Go 版本支持熔断降级特性
✅Go 0.4.02020.6Go 版本支持热点流控
✅1.8.02020.8更强大灵活的熔断降级能力
Node.js 0.1.02020.9首个 Node.js 版本
Go 1.0 GA2020.9Cloud Native 生态
2.0.02021.6自适应限流策略完善,云原生演进

详细 Roadmap:

功能点优先级重要性Milestone 版本
注解支持0.1.1
⚡️异步调用支持0.2.0
⚡️热点参数限流0.2.0
来源访问控制(黑白名单)0.2.0
⚡️集群限流(基础版)1.4.0
与更多主流框架适配流动进行
与更多的数据源适配流动进行
⚡️Reactive 支持1.5.0
⚡️API Gateway 流量控制1.6.0
⚡️Envoy 集群流量控制支持1.7.0
指标/监控 API 标准化长期
⚡️完善的 Service Mesh 支持2.0.0(长期)
⚡️多语言支持(C++/Go 原生版本)长期
⚡️智能化、自适应限流2.0.0(长期)

开源生态:

sentinel-opensource-cloud-native-landscape-202006

异步调用支持

  • Milestone: 0.2.0
  • Motivation:未来各种 RPC 框架、Web 框架都朝着异步化的目标发展(Dubbo 3.0, gRPC, Spring WebFlux, Vert.x, 异步 Servlet, Netty 服务等),整个 Java 的发展方向也在朝着异步、响应式演进(无论是 CompletableFuture, Reactive Streams 还是后面的 Project Loom 协程),因此支持异步调用非常重要。
  • 目标:支持异步调用链路的指标统计

集群限流与 Service Mesh

  • Milestone: 1.4.0
  • Motivation:引入集群限流的功能,作为单独的服务,与单机限流相组合形成两道屏障。同时,集群限流可以为 API Gateway 和 Service Mesh 提供集群流量控制的能力。
  • Tasks:
    • ✅Sentinel 集群限流客户端、服务端接口抽象设计,通信协议设计
    • ✅Sentinel 集群限流默认实现
    • ✅Envoy 集群流量控制支持(Envoy global rate limiting service)
    • Istio 原生支持
    • 集群限流客户端多语言支持(Go/C++ 等)

Reactive 支持

  • Milestone: 1.5.0
  • Motivation: 响应式编程是 Java 社区未来的发展趋势。越来越多的人开始用 RxJava 和 Reactor,Java 9 也将 Reactive Streams 的接口引入了 JDK,Spring 5.0 也引入了 Spring WebFlux / Project Reactor。可以说后续 reactive 是发展趋势。
  • 目标:
    • 支持 Reactive 适配,包括 Reactor、RxJava 2.x 等,并适配各种 reactive 库和框架。
    • 结合 back-pressure 等特性实现自适应限流(长期目标)。

监控标准化

  • Motivation:目前 Sentinel 的监控统计指标提供方式还可以更丰富(比如 percentile, gauge, histogram 等 metrics 信息)。同时监控 API 比较简单,缺乏对外提供的标准。而监控信息的展示(可视化)也没有比较标准的和开源整合的方案。
  • 目标:
    • 指标统计标准化、完善,可以对外提供完善的 metrics 的功能
    • 监控 API 标准化,同时可以适配常用的开源方案(如 Prometheus)
    • 监控信息的可视化与开源方案适配(如 Grafana)
  • 目前的设计

Sentinel 多语言

  • Milestone: 流动进行
  • 复杂度:高
  • 目标:
    • 集群限流多语言客户端:初期通过 gRPC service 等形式对接 Envoy、Istio 等抽象的接口;后期实现各个语言的原生 client(C++, Go, Node.js, Rust, PHP 等,欢迎贡献)
    • 核心库多语言版本

更多适配(生态)

  • Milestone: 流动进行
  • 复杂度:低
  • Motivation:与更多的主流框架适配,与更多的动态配置/存储适配,可以吸引更多的用户。
  • 目标:
    • 框架适配:如 Vert.x、RxJava 2.x、Quarkus 整合等
    • DataSource 适配:如 etcd, MongoDB, MySQL, Eureka 等
  • Note:欢迎大家来贡献

高版本 Java 适配

  • Milestone: 流动进行
  • Motivation:Java 现在迅猛发展,JDK 11 已经 GA。虽然大部分开发者仍在使用 Java 8,但是 JDK 发布下一个 LTS 版本后,预计逐渐会有一些开发者开始用新的 LTS 版本。因此对高版本的 Java 适配可以提上日程了。
  • 主要关注点:JDK 9 引入的模块化可能会有比较大的影响。后续可以先在 CI 上开启高版本 JDK 的构建,看看有什么问题。
  • 注:已在 Travis CI 添加 JDK 11 日常构建环境,能够正常跑通。

智能化限流

  • Milestone: 2.0.0(长期进行)
  • Motivation:当前用户需要根据系统的情况自己评估出一些数据来设定规则。如果能够比较好地利用实时指标,结合历史的监控数据,来自适应地进行限流降级,对用户来说是非常有吸引力的。