3、Sentinel 技术路线

3.1 Overview

Roadmap 时间点:
版本Milestone 主要特性
版本Milestone 主要特性

0.2.0 2018.9 异步调用支持、热点限流
0.4.0 2018.10 集群限流(基础版)、黑白名单功能
0.6.0 2018.11 指标/监控API 标准化,适配Prothemeus 等
0.8.0 2018.12 Reactive, Functional 支持
1.0.0 2019.1 - 2019.2 Service Mesh 支持

详细Roadmap:
功能点优先级重要性Milestone 版本
注解支持高高0.1.1
⚡ 异步调用支持高高0.2.0
⚡ 热点限流高中0.2.0
⚡ 集群限流(基础版) 高高0.4.0
黑白名单功能中中0.4.0
与更多主流框架适配中高流动进行
与更多的数据源适配中高流动进行
⚡ 指标/监控API 标准化高高0.6.0(长期)
⚡ Reactive 支持中高0.8.0(长期)
高版本Java 适配(JDK 9+) 低中流动进行
功能点优先级重要性Milestone 版本
Service Mesh 支持低高1.0.0(长期)
多语言支持(集群限流客户端) 低中长期
智能化(动态规则调配) 低中1.1.0(长期)

3.2 异步调用支持

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

3.3 热点限流

  • Milestone: 0.2.0
  • Motivation:将内部的热点限流功能加入到开源版本,同时进行优化,可以解决热点访问的问题。

3.4 集群限流与Service Mesh

  • Milestone: 0.4.0
  • Motivation:引入集群限流的功能,与单机限流相组合形成两道屏障。同时,集群限流可以作为服务对外提供,可以为Service Mesh 提供集群流量防护的服务。

3.5 监控标准化

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

3.6 Reactive 支持

  • Milestone: 0.8.0
  • Motivation: 响应式编程是Java 社区未来的发展趋势。越来越多的人开始用RxJava 1.x/2.x,Java 9 也将Reactive Streams 的接口引入了JDK,Spring 5.0 也引入了Spring WebFlux / Project Reactor。可以说后续reactive 是发展趋势。
  • 目标:支持Reactive 的形式(包括指标统计的实现,限流、降级、负载等算子的实现)

3.7 更多适配(生态)

  • Milestone: 流动进行
  • 复杂度:低
  • Motivation:与更多的主流框架适配,与更多的动态配置/存储适配,可以吸引更多的用户。
  • 目标:
    o 框架适配:如更完善的gRPC 适配、RxJava 适配等
    o DataSource 适配:如etcd, ZooKeeper, Git, MongoDB, MySQL 等
  • Note:欢迎大家来贡献

3.8 高版本Java 适配

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

3.9 智能化

  • Milestone: 1.1.0(长期进行)
  • Motivation:当前用户需要根据系统的情况自己评估出一些数据来设定规则。如果能够比较好地利用历史的指标统计数据,根据设计的算法去动态地去调配规则,对用户来说是非常有吸引力的。