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

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 带你读《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

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
21天前
|
监控 Cloud Native 安全
基于 API 网关践行 API First 开发实践
API First 开发模式的核心在于:以 API 为先,将其视为“头等公民”,在构建应用、服务及集成之前,应优先定义并设计 API 及其配套。API First 作为一种相对较新的开发模式,它已逐渐流行并获得业内的广泛认可。
|
9月前
|
Dubbo Java 应用服务中间件
性能工具之JMeter Dubbo 脚本开发
【5月更文挑战第13天】性能工具之JMeter Dubbo 脚本开发
98 3
性能工具之JMeter Dubbo 脚本开发
|
5月前
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
在 Apache Dubbo 突破 4w Star 之际,Apache Dubbo 团队正式宣布,Dubbo 3.3 正式发布!作为全球领先的开源微服务框架,Dubbo 一直致力于为开发者提供高性能、可扩展且灵活的分布式服务解决方案。此次发布的 Dubbo 3.3,通过 Triple X 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。
181 13
|
8月前
|
Apache 数据库
杨校老师课堂之基于Apache的数据库连接池DBCP的工具类开发
杨校老师课堂之基于Apache的数据库连接池DBCP的工具类开发
32 0
|
6月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
234 9
Apache IoTDB进行IoT相关开发实践
|
6月前
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
74 1
|
6月前
|
开发框架 Dubbo 应用服务中间件
微服务开发框架-----Apache Dubbo
这篇文章介绍了Apache Dubbo微服务开发框架,它提供RPC通信和微服务治理能力,支持服务发现、负载均衡和流量治理等功能,并强调了Dubbo在微服务规模化实践和企业级治理方面的优势。
微服务开发框架-----Apache Dubbo
|
7月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
303 12
|
6月前
|
Apache 开发者 Java
Apache Wicket揭秘:如何巧妙利用模型与表单机制,实现Web应用高效开发?
【8月更文挑战第31天】本文深入探讨了Apache Wicket的模型与表单处理机制。Wicket作为一个组件化的Java Web框架,提供了多种模型实现,如CompoundPropertyModel等,充当组件与数据间的桥梁。文章通过示例介绍了模型创建及使用方法,并详细讲解了表单组件、提交处理及验证机制,帮助开发者更好地理解如何利用Wicket构建高效、易维护的Web应用程序。
80 0
|
7月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
The article introduces IoTDB, an open-source time-series database designed for efficient management of IoT-generated data. It addresses challenges like real-time integration of massive datasets and security. IoTDB supports high-performance storage,
173 0
Apache IoTDB进行IoT相关开发实践

推荐镜像

更多