《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——三、 网关(4) https://developer.aliyun.com/article/1223989
3) 深入理解Dubbo插件
在运行上述demo的过程中,是否存在一些疑问:
• dubbo服务是如何注册到shenyu-admin?
• shenyu-admin是如何将数据同步到ShenYu网关?
• DubboPlugin是如何将http协议转换到到dubbo协议?
带着这些疑问,来深入理解dubbo插件。
a) 应用客户端接入
应用客户端接入是指将微服务接入到Apache ShenYu网关,当前支持Http、Dubbo、Spring Cloud、gRPC、Motan、Sofa、Tars等协议的接入。
将应用客户端接入到Apache ShenYu网关是通过注册中心来实现的,涉及到客户端注册和服务端同步数据。注册中心支持Http、Zookeeper、Etcd、Consul和Nacos。默认是通过Http方式注册。
客户端接入的相关配置请参考客户端接入配置。
• 客户端注册
在你的微服务配置中声明注册中心客户端类型,如Http或Zookeeper。
应用程序启动时使用SPI方式加载并初始化对应注册中心客户端,通过实现Spring Bean相关的后置处理器接口,在其中获取需要进行注册的服务接口信息,将获取的信息放入Disruptor中。
注册中心客户端从Disruptor中读取数据,并将接口信息注册到shenyu-admin,Disruptor在其中起数据与操作解耦的作用,利于扩展。
• 服务端注册
在shenyu-admin配置中声明注册中心服务端类型,如Http或Zookeeper。当shenyu-admin启动时,读取配置类型,加载并初始化对应的注册中心服务端,注册中心服务端收到shenyu-client注册的接口信息后,将其放入Disruptor中,然后会触发注册处理逻辑,将服务接口信息更新并发布同步事件。
Disruptor在其中起到数据与操作解耦,利于扩展。如果注册请求过多,导致注册异常,也有数据缓冲作用。
《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——三、 网关(6) https://developer.aliyun.com/article/1223986