带你读《Apache Dubbo微服务开发从入门到精通》——三、 网关(6)

简介: 带你读《Apache Dubbo微服务开发从入门到精通》——三、 网关(6)

《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——三、 网关(5) https://developer.aliyun.com/article/1223987



b) 数据同步原理

 

数据同步是指在shenyu-admin后台操作数据以后,使用何种策略将数据同步到Apache ShenYu网关。Apache ShenYu网关当前支持ZooKeeper、WebSocket、Http长轮询、Nacos、Etcd和Consul进行数据同步。默认是通过WebSocket进行数据同步。

 

数据同步的相关配置请参考数据同步配置

 

数据同步的意义

 

网关是流量请求的入口,在微服务架构中承担了非常重要的角色,网关高可用的重要性不言而喻。在使用网关的过程中,为了满足业务诉求,经常需要变更配置,比如流控规则、路由规则等等。因此,网关动态配置是保障网关高可用的重要因素。

 

当前数据同步特性如下:

 

所有的配置都缓存在Apache ShenYu网关内存中,每次请求都使用本地缓存,速度非常快。

用户可以在shenyu-admin后台任意修改数据,并马上同步到网关内存。

支持Apache ShenYu的插件、选择器、规则数据、元数据、签名数据等数据同步。

所有插件的选择器,规则都是动态配置,立即生效,不需要重启服务。

数据同步方式支持Zookeeper、Http长轮询、Websocket、Nacos、Etcd和Consul。

 

数据同步原理分析

 

下图展示了Apache ShenYu数据同步的流程,Apache ShenYu网关在启动时,会从配置服务同步配置数据,并且支持推拉模式获取配置变更信息,然后更新本地缓存。管理员可以在管理后台(shenyu-admin),变更用户权限、规则、插件、流量配置,通过推拉模式将变更信息同步给Apache ShenYu网关,具体是push模式,还是pull模式取决于使用哪种同步方式。

 

image.png

 

在最初的版本中,配置服务依赖Zookeeper实现,管理后台将变更信息push给网关。而现在可以支持WebSocket、Http长轮询、Zookeeper、Nacos、Etcd和Consul,通过在配置文件中设置shenyu.sync.${strategy}指定对应的同步策略,默认使用webosocket同步策略,可以做到秒级数据同步。但是,有一点需要注意的是,Apache ShenYu网关和shenyu-admin必须使用相同的同步策略。

 

如下图所示,shenyu-admin在用户发生配置变更之后,会通过EventPublisher发出配置变更通知,由EventDispatcher处理该变更通知,然后根据配置的同步策略http、weboscket、zookeeper、naocs、etcd、consul,将配置发送给对应的事件处理器。

 

如果是websocket同步策略,则将变更后的数据主动推送给shenyu-web,并且在网关层,会有对应的WebsocketDataHandler处理器来处理shenyu-admin的数据推送。

 

如果是zookeeper同步策略,将变更数据更新到zookeeper,而ZookeeperSyncCache会监听到zookeeper的数据变更,并予以处理。

 

如果是http同步策略,由网关主动发起长轮询请求,默认有90s超时时间,如果shenyu-admin没有数据变更,则会阻塞http请求,如果有数据发生变更则响应变更的数据信息,如果超过60s仍然没有数据变更则响应空数据,网关层接到响应后,继续发起http请求,反复同样的请求。


《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——三、 网关(7) https://developer.aliyun.com/article/1223983

相关文章
|
2月前
|
人工智能 安全 API
20 万奖金池就位!Higress AI 网关开发挑战赛参赛指南
本次赛事共设三大赛题方向,参赛者可以任选一个方向参赛。本文是对每个赛题方向的参赛指南。
327 22
|
运维 监控 负载均衡
探索微服务架构下的服务治理:动态服务管理平台深度解析
探索微服务架构下的服务治理:动态服务管理平台深度解析
|
运维 监控 安全
探索微服务架构下的服务治理:动态服务管理平台的力量
探索微服务架构下的服务治理:动态服务管理平台的力量
|
11月前
|
监控 Cloud Native 安全
基于 API 网关践行 API First 开发实践
API First 开发模式的核心在于:以 API 为先,将其视为“头等公民”,在构建应用、服务及集成之前,应优先定义并设计 API 及其配套。API First 作为一种相对较新的开发模式,它已逐渐流行并获得业内的广泛认可。
568 156
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
283 2
|
负载均衡 监控 Java
深入探索微服务架构下的服务治理
深入探索微服务架构下的服务治理
184 39
|
9月前
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
166 0
|
存储 监控 负载均衡
构建高效微服务架构:服务治理与监控的实践
构建高效微服务架构:服务治理与监控的实践
|
负载均衡 Java 云计算
微服务架构下的服务治理与容错机制
微服务架构下的服务治理与容错机制
233 20
|
负载均衡 算法 Java
深入探索微服务架构下的服务治理
深入探索微服务架构下的服务治理

推荐镜像

更多