Overview
Roadmap 时间点:
版本 | Milestone | 主要特性 |
---|---|---|
✅0.2.0 | 2018.9 | 异步调用支持、热点参数限流、黑白名单功能 |
✅1.4.0 | 2018.12 | 集群限流(基础版) |
✅1.5.0 | 2019.3 | Reactive 支持(RxJava / Reactor) |
✅1.6.0 | 2019.4 | API Gateway 流控 |
✅C++ V1 | 2019.6 | Sentinel C++ 基础功能(统计、流控、监控) |
✅1.7.0 | 2019.11 | Service Mesh 初步支持 |
✅Go 0.1.0 | 2020.2 | 首个 Go 版本 |
✅Go 0.3.0 | 2020.5 | Go 版本支持熔断降级特性 |
✅Go 0.4.0 | 2020.6 | Go 版本支持热点流控 |
✅1.8.0 | 2020.8 | 更强大灵活的熔断降级能力 |
Node.js 0.1.0 | 2020.9 | 首个 Node.js 版本 |
Go 1.0 GA | 2020.9 | Cloud Native 生态 |
2.0.0 | 2021.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(长期) |
开源生态:
异步调用支持
- 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)
- 目前的设计
- 控制台监控存储接口:
MetricsRepository
- 指标统计 SPI:
MetricExtension
(since 1.6.1)
- 控制台监控存储接口:
Sentinel 多语言
- Milestone: 流动进行
- 复杂度:高
- 目标:
- 集群限流多语言客户端:初期通过 gRPC service 等形式对接 Envoy、Istio 等抽象的接口;后期实现各个语言的原生 client(C++, Go, Node.js, Rust, PHP 等,欢迎贡献)
- 核心库多语言版本
- Sentinel C++
- Sentinel Go
- Sentinel Node.js
更多适配(生态)
- 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:当前用户需要根据系统的情况自己评估出一些数据来设定规则。如果能够比较好地利用实时指标,结合历史的监控数据,来自适应地进行限流降级,对用户来说是非常有吸引力的。