注册中心实现原理之Http注册
· One min read
Apache ShenYu 是一个异步的,高性能的,跨语言的,响应式的
API网关。
在ShenYu网关中,注册中心是用于将客户端信息注册到shenyu-admin,admin再通过数据同步将这些信息同步到网关,网关通过这些数据完成流量筛选。客户端信息主要包括接口信息和URI信息。
本文基于
shenyu-2.5.0版本进行源码分析,官网的介绍请参考 客户端接入原理 。
1. 注册中心原理
当客户端启动时,读取接口信息和uri信息,通过指定的注册类型,将数据发送到shenyu-admin。

图中的注册中心需要用户指定使用哪种注册类型,ShenYu当前支持Http、Zookeeper、Etcd、Consul和Nacos进行注册。具体如何配置请参考 客户端接入配置 。
ShenYu在注册中心的原理设计上引入了Disruptor,Disruptor队列在其中起到数据与操作解耦,利于扩展。如果注册请求过多,导致注册异常,也有数据缓冲作用。

如图所示,注册中心分为两个部分,一是注册中心客户端register-client,负责处理客户端数据读取。另一个是注册中心服务端register-server,负责处理服务端(就是shenyu-admin)数据写入。通过指定注册类型进行数据发送和接收。
- 客户端:通常来说就是一个微服务,可以是
springmvc,spring-cloud,dubbo,grpc等。 register-client:注册中心客户端,读取客户接口和uri信息。Disruptor:数据与操作解耦,数据缓冲作用。register-server:注册中心服务端,这里就是shenyu-admin,接收数据,写入数据库,发数据同步事件。- 注册类型:指定注册类型,完成数据注册,当前支持
Http、Zookeeper、Etcd、Consul和Nacos。
本文分析的是使用Http的方式进行注册,所以具体的处理流程如下:

在客户端,数据出队列后,通过http传输数据,在服务端,提供相应的接口,接收数据,然后写入队列。