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
2、启动Nacos-Sync
因为Nacos-Sync需要同步的job信息,它默认依赖数据库mysql。
将检出的nacos-sync项目导入到idea中,在nacossync-distribution模块下有脚本nacosSync.sql,在mysql中创建用户后,执行该表初始化脚本。
mysql初始化完成后,修改项目的配置文件,打开nacossync-worker模块下的application.properties,修改mysql配置信息
启动工程
到此环境部署已经完毕,单机版真的非常简单,灰常感谢nacos团队的友情奉献。
3、nacos-sync的配置
集群配置
集群名:clusterA
集群类型:EUREKA (因为我这边另一个是Eureka)
再创建一个nacos集群Main,作为目标集群,即将ClusterA的指定服务注册到Nacos集群Main里
服务同步
服务名:在源集群中的服务名,即需要被同步到目标集群的服务
分组名:可随意
源集群:需要同步的服务所在的集群
目标集群:需要将服务同步到的集群
这样服务就可以同步了,如果在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实现多种服务注册与发现之间的服务聚合的主要内容,如果未能解决你的问题,请参考以下文章