SPI扩展设计
SPI 全称为 Service Provider Interface, 是 JDK 内置的一种服务提供发现功能, 一种动态替换发现的机制。
shenyu-spi 是Apache ShenYu网关自定义的SPI扩展实现,设计和实现原理参考了Dubbo的 SPI扩展实现 。
注册中心扩展
通过哪种方式实现服务的注册,当前支持Consul、Etcd、Http、Nacos和Zookeeper。注册中心的扩展包括客户端和服务端,接口分别为 ShenyuServerRegisterRepository 和 ShenyuClientRegisterRepository 。
监控中心扩展
负责服务的监控,通过SPI加载具体实现,当前支持Prometheus ,服务接口是 MetricsService 。
负载均衡扩展
从多个服务提供方中选择一个进行调用,当前支持的算法有Hash、Random 和 RoundRobin,扩展接口是 LoadBalance 。
RateLimiter扩展
在RateLimiter插件中,使用何种限流算法,当前支持Concurrent、LeakyBucket、SlidingWindow 和 TokenBucket,扩展接口是 RateLimiterAlgorithm 。