Nacos-sync实现多种服务注册与发现之间的服务聚合

Posted 小蚂蚁学全栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nacos-sync实现多种服务注册与发现之间的服务聚合相关的知识,希望对你有一定的参考价值。

前段时间甲方爸爸提出了一个新需求,大概如下:

公司内部多个系统团队都实现微服务化,服务的注册与发现在跨系统的情况不能很好的由统一网关做路由转发,于是要求探究下在网关上如何对接多个服务注册中心。

大概需求就是这样,后来经过思考后,自己大体上给出了方案,修改Eureka的服务发现机制,修改源码拉取对接多个注册中心,获取到服务后,可以统一管理或者通过不同的负载均衡策略去取不同的服务列表,大体思路是这样,但是成本相对较大;后来通过 《》及nacos维护人员的推荐,了解到nacos的另一个组件nacos-sync。


Nacos-sync使用场景架构



大意是dubbo服务的consumer注册到zk Cluster上,然后通过NacosSync组件将服务同步到Nacos Cluster里,最后dubbo服务的provider可直接通过Nacos Cluster发现服务列表,这样就实现了跨注册中心的服务发现。看到这里,nacos-sync组件在理论上基本符合我们需求的实现。


Naocs与Nacos-Sync实践部署


Nacos 部署安装


目前Nacos-Server最新版 0.9.0,

目前Nacos-Sync最新版0.3.0(这里建议直接拉取源码,发布版本当时试了下没有成功)

git clone https://github.com/nacos-group/nacos-sync


1、启动Nacos-Server

在windows 系统上启动: nacos/bin/startup.cmd     

默认用户名密码:nacos/nacos

Nacos-sync实现多种服务注册与发现之间的服务聚合


2、启动Nacos-Sync

因为Nacos-Sync需要同步的job信息,它默认依赖数据库mysql

将检出的nacos-sync项目导入到idea中,在nacossync-distribution模块下有脚本nacosSync.sql,在mysql中创建用户后,执行该表初始化脚本。

Nacos-sync实现多种服务注册与发现之间的服务聚合

mysql初始化完成后,修改项目的配置文件,打开nacossync-worker模块下的application.properties,修改mysql配置信息

Nacos-sync实现多种服务注册与发现之间的服务聚合

启动工程

Nacos-sync实现多种服务注册与发现之间的服务聚合

Nacos-sync实现多种服务注册与发现之间的服务聚合


到此环境部署已经完毕,单机版真的非常简单,灰常感谢nacos团队的友情奉献。

3、nacos-sync的配置

集群配置

Nacos-sync实现多种服务注册与发现之间的服务聚合

集群名:clusterA

集群类型:EUREKA (因为我这边另一个是Eureka)


再创建一个nacos集群Main,作为目标集群,即将ClusterA的指定服务注册到Nacos集群Main里

Nacos-sync实现多种服务注册与发现之间的服务聚合

服务同步

Nacos-sync实现多种服务注册与发现之间的服务聚合

服务名:在源集群中的服务名,即需要被同步到目标集群的服务

分组名:可随意

源集群:需要同步的服务所在的集群

目标集群:需要将服务同步到的集群

这样服务就可以同步了,如果在ClusterA中存在DEMETER-GATEWAY-ACCOUNT服务,那么该服务会被同步到nacos的

到此nacos与nacos-sync组件配合使用已经讲完了。


4、原理解析

简单的review源码下了,原理大概上是通过配置的定时任务,去指定的源集群中根据服务名拉取服务相关的所有信息,然后重新包装成nacos的元数据格式,在注册到目标集群nacos中。


5、Nacos-Sync目前已支持的同步类型

  • Nacos 数据同步到 Nacos

  • Zookeeper 数据同步到 Nacos

  • Nacos 数据同步到 Zookeeper

  • Eureka 数据同步到 Nacos

  • Consul 数据同步到 Nacos


nacos-sync目前这个方案在功能上基本已经解决基于Java语言栈的多个注册中心间服务同步的问题,但是貌似当初Nacos首秀时,并没有提出该功能,所以生产环境的高可用、可靠性还需要进一步的验证。如果有机会,nacos开源社区人能看到,也希望他们能给大家讲讲nacos-sync在阿里内部的使用情况。


Nacos还有个重要的功能就是DNS-F,它在虎牙内部也是得到了重要使用,以后有机会也尝试一波。


最后,想要了解更多Nacos功能可去https://github.com/alibaba/nacos

也可以去读读《》



以上是关于Nacos-sync实现多种服务注册与发现之间的服务聚合的主要内容,如果未能解决你的问题,请参考以下文章

微服务~Eureka实现的服务注册与发现及服务之间的调用

如何实现netty RPC的服务注册与服务发现?

springcloud-Eureka服务注册发现01

负载均衡---ribbon

微服务系列微服务注册与发现

Spring Cloud实战Eurake服务注册与发现