• Overview
  • 异步调用支持
  • 集群限流与 Service Mesh
  • Reactive 支持
  • 监控标准化
  • Sentinel 多语言
  • 更多适配(生态)
  • 高版本 Java 适配
  • 智能化限流

    Overview

    Roadmap 时间点:

    版本Milestone主要特性
    ✅0.2.02018.9异步调用支持、热点参数限流、黑白名单功能
    ✅1.4.02018.12集群限流(基础版)
    ✅1.5.02019.3Reactive 支持(RxJava / Reactor)
    ✅1.6.02019.4API Gateway 流控
    ✅Sentinel C++ V12019.6Sentinel C++ 基础功能(统计、流控、监控)
    ✅1.7.02019.11Service Mesh 初步支持
    1.8.02019.12Cloud Native 生态、Sentinel Golang 版本
    2.0.02020.03丰富的自适应限流策略

    详细 Roadmap:

    功能点优先级重要性Milestone 版本
    注解支持0.1.1
    ⚡️异步调用支持0.2.0
    ⚡️热点参数限流0.2.0
    黑白名单功能0.2.0
    ⚡️集群限流(基础版)1.4.0
    与更多主流框架适配流动进行
    与更多的数据源适配流动进行
    ⚡️Reactive 支持1.5.0
    ⚡️指标/监控 API 标准化1.8.0(长期)
    高版本 Java 适配(JDK 11)流动进行
    ⚡️Service Mesh 支持2.0.0(长期)
    ⚡️多语言支持(集群限流客户端)长期
    ⚡️智能化、自适应限流2.0.0(长期)

    开源生态:

    sentinel-opensource-cloud-native-landscape-201903-new

    异步调用支持

    • 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 Rate Limiting Service 适配
      • 与 Istio 适配(Quota Management in Istio Mixer)
      • 集群限流客户端多语言支持(C++ / Golang 等)

    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++, Golang, Node.js, Rust 等,欢迎贡献)
      • 核心库多语言版本
        • Sentinel C++
        • Sentinel Golang

    更多适配(生态)

    • Milestone: 流动进行
    • 复杂度:低
    • Motivation:与更多的主流框架适配,与更多的动态配置/存储适配,可以吸引更多的用户。
    • 目标:
      • 框架适配:如更完善的 gRPC 适配、Vert.x、RxJava 2.x 整合等
      • DataSource 适配:如 etcd, MongoDB, MySQL, Consul 等
    • 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:当前用户需要根据系统的情况自己评估出一些数据来设定规则。如果能够比较好地利用实时指标,结合历史的监控数据,来自适应地进行限流降级,对用户来说是非常有吸引力的。