SPI扩展设计

SPI 全称为 Service Provider Interface, 是 JDK 内置的一种服务提供发现功能, 一种动态替换发现的机制。

shenyu-spiApache ShenYu网关自定义的SPI扩展实现,设计和实现原理参考了DubboSPI扩展实现

注册中心扩展

通过哪种方式实现服务的注册,当前支持ConsulEtcdHttpNacosZookeeper。注册中心的扩展包括客户端和服务端,接口分别为 ShenyuServerRegisterRepositoryShenyuClientRegisterRepository

监控中心扩展

负责服务的监控,通过SPI加载具体实现,当前支持Prometheus ,服务接口是 MetricsService

负载均衡扩展

从多个服务提供方中选择一个进行调用,当前支持的算法有HashRandomRoundRobin,扩展接口是 LoadBalance

RateLimiter扩展

RateLimiter插件中,使用何种限流算法,当前支持ConcurrentLeakyBucketSlidingWindowTokenBucket,扩展接口是 RateLimiterAlgorithm

匹配方式扩展

在添加选择器和规则时,使用哪种匹配方式,当前支持AndOr,扩展接口是 MatchStrategy

条件参数扩展

在添加选择器和规则时,使用哪种条件参数,当前支持URIRequestMethodQueryPostIPHostCookieHeader,扩展接口是 ParameterData

条件策略扩展

在添加选择器和规则时,使用哪种条件策略,当前支持MatchContainsEqualsRegexTimerAfterTimerBeforeExclude,扩展接口是 PredicateJudge