【Nacos】使用Nacos-Sync同步两个Nacos集群中的数据

Nacos-Sync官方文档:NacosSync 用户手册

介绍

  • NacosSync是一个支持多种注册中心的同步组件,基于Spring boot开发框架,数据层采用Spring Data JPA,遵循了标准的JPA访问规范,支持多种数据源存储,默认使用Hibernate实现,更加方便的支持表的自动创建更新
  • 使用了高效的事件异步驱动模型, 支持多种自定义事件,使得同步任务处理的延时控制在3s,8C16G的单机能够支持6K的同步任务
  • NacosSync除了单机部署,也提供了高可用的集群部署模式,NacosSync是无状态设计,将任务等状态数据迁移到了数据库,使得集群扩展非常方便
  • 抽象出了Sync组件核心接口,通过注解对同步类型进行区分,使得开发者可以很容易的根据自己需求,去扩展不同注册中心,目前已支持的同步类型:
    • Nacos数据同步到Nacos
    • Zookeeper数据同步到Nacos
    • Nacos数据同步到Zookeeper
    • Eureka数据同步到Nacos
    • Consul数据同步到Nacos

操作流程

初始化

【Nacos】使用Nacos-Sync同步两个Nacos集群中的数据_第1张图片

启动如图所示的两个nacos集群,这两个集群用的使用通一个MySQL数据库,因此有相同的namespace。

启动一个服务nacos-client-01,注册到cluster1的happy命名空间中,此时可以在cluster1的控制台看到服务

【Nacos】使用Nacos-Sync同步两个Nacos集群中的数据_第2张图片

在开启nacos-sync前,cluster2的happy命名空间服务中是没有服务nacos-client-01的

【Nacos】使用Nacos-Sync同步两个Nacos集群中的数据_第3张图片

进行服务同步

利用nacos-sync将cluster1中happy命名空间下的nacos-client-01服务同步到cluster2中happy命名空间下

在nacos-sync控制台中,添加两个集群的信息

【Nacos】使用Nacos-Sync同步两个Nacos集群中的数据_第4张图片

添加完成后的集群信息如图所示

【Nacos】使用Nacos-Sync同步两个Nacos集群中的数据_第5张图片

新增一个同步任务

【Nacos】使用Nacos-Sync同步两个Nacos集群中的数据_第6张图片

添加完成后会自动进行同步,下图中同步已完成

【Nacos】使用Nacos-Sync同步两个Nacos集群中的数据_第7张图片

问题

这两个nacos集群使用的同一个数据库,但刚开始在cluster2中为什么没有服务nacos-client-01?

这是因为Nacos服务注册的信息默认是存储在内存中的,而不是直接存储在数据库中。Nacos使用了一种基于RAFT协议的分布式一致性算法来保证数据的一致性和可靠性。当你服务注册到第一个集群中时,它会将注册信息保存在内存中的实例列表中。当使用nacos-sync将第一个集群中的服务提供者同步到第二个集群时,它会将内存中的实例列表复制到第二个集群的内存中,从而使第二个集群中也能查看到注册的服务。

【Nacos】使用Nacos-Sync同步两个Nacos集群中的数据_第8张图片

你可能感兴趣的:(微服务,服务发现,微服务,spring,cloud)