-
Notifications
You must be signed in to change notification settings - Fork 8.1k
Roadmap
Eric Zhao edited this page Nov 8, 2022
·
60 revisions
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.11 | 所有能力 ready,云原生生态 |
✅Rust 版本 | 2021.10 | Rust 多语言原生版本 |
2.0.0 | 2022.12 | 流量治理标准组件,领域涵盖流量路由/调度、流量染色、流控降级 |
Go 2.0 GA | 2023.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 2.0 品牌升级将为流量治理,领域涵盖流量路由/调度、流量染色、流控降级等;同时社区正在将流量治理相关标准抽出到 OpenSergo 标准中,Sentinel 作为流量治理标准实现。
- Milestone: 0.2.0
- Motivation:未来各种 RPC 框架、Web 框架都朝着异步化的目标发展(Dubbo 3.0, gRPC, Spring WebFlux, Vert.x, 异步 Servlet, Netty 服务等),整个 Java 的发展方向也在朝着异步、响应式演进(无论是 CompletableFuture, Reactive Streams 还是后面的 Project Loom 协程),因此支持异步调用非常重要。
- 目标:支持异步调用链路的指标统计
- Milestone: 1.4.0
- Motivation:引入集群限流的功能,作为单独的服务,与单机限流相组合形成两道屏障。同时,集群限流可以为 API Gateway 和 Service Mesh 提供集群流量控制的能力。
- Tasks:
- ✅Sentinel 集群限流客户端、服务端接口抽象设计,通信协议设计
- ✅Sentinel 集群限流默认实现
- ✅Envoy 集群流量控制支持(Envoy global rate limiting service)
- Istio 原生支持
- 集群限流客户端多语言支持(Go/C++ 等)
- 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 等特性实现自适应限流(长期目标)。
- Milestone: 2.0
- Motivation:Cluster Policy Brain 设计可以针对任意流量的场景做一些控制的策略,这里面包括但不限于:集群流控、安全策略、流量清洗、服务权重调整。
- Milestone: 2.0(长期进行)
- Motivation:当前用户需要根据系统的情况自己评估出一些数据来设定规则。如果能够比较好地利用实时指标,结合历史的监控数据,来自适应地进行限流降级,对用户来说是非常有吸引力的。
- 相关 issue:
- 系统指标扩展:https://github.com/alibaba/Sentinel/issues/2061
- 自适应流控/决策控制相关抽象:https://github.com/alibaba/Sentinel/issues/1889
- 服务/接口分级:pending
- Milestone: 2.0
- Motivation:决策事件闭环
- Milestone: 流动进行
- 复杂度:高
- 目标:
- 集群限流多语言客户端:初期通过 gRPC service 等形式对接 Envoy、Istio 等抽象的接口;后期实现各个语言的原生 client(C++, Go, Node.js, Rust, PHP 等,欢迎贡献)
- 核心库多语言版本(欢迎基于 C++/Go/Rust 版本实现其它语言版本)
- Sentinel C++
- Sentinel Go
- Sentinel Rust
- Sentinel Node.js
- Milestone: 长期进行
- 复杂度:低
- Motivation:与更多的主流框架适配,与更多的动态配置/存储适配,可以吸引更多的用户。
- 目标:
- 框架适配:如 Vert.x、RxJava 2.x、Quarkus 整合等
- DataSource 适配:如 etcd, MongoDB, MySQL, Eureka 等
- Note:欢迎大家来贡献
- Motivation:目前 Sentinel 的监控统计指标提供方式还可以更丰富(比如 percentile, gauge, histogram 等 metrics 信息)。同时监控 API 比较简单,缺乏对外提供的标准。而监控信息的展示(可视化)也没有比较标准的和开源整合的方案。
- 目标:
- 指标统计标准化、完善,可以对外提供完善的 metrics 的功能
- 监控 API 标准化,同时可以适配常用的开源方案(如 Prometheus)
- 监控信息的可视化与开源方案适配(如 Grafana)
- 目前的设计
- 控制台监控存储接口:
MetricsRepository
- 基础指标统计 SPI:
MetricExtension
(since 1.6.1) - 系统指标统计 SPI
- 控制台监控存储接口:
-
文档
-
Documents
- Read Me
- Introduction
- How to Use
- How it Works
- Flow Control
- Parameter Flow Control
- Cluster Flow Control
- API Gateway Flow Control
- Circuit Breaking
- Adaptive System Protection
- Metrics
- General Configuration
- Dynamic Rule Configuration
- Dashboard
- Integrations with open-source frameworks
- Contribution Guideline