分布式Dubbo和spring cloud在多服务多人开发环境下的问题

在大型的Dubbo多服务开发环境中,如何避免在测试时影响他人?本文介绍了不将服务注册到Zookeeper,而是采用本地消费者点对点直连服务的方式进行测试。同时,详细说明了Dubbo的点对点直连配置,包括在<dubbo:reference>标签中配置URL、通过JVM启动参数映射服务地址以及使用文件映射。同样的策略也适用于Spring Cloud,只需确保调试服务不注册到注册中心。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在大型的dubbo多服务开发环境下,统一的注册注册中心。怎么测试自己的服务呢?

问题:1.直接启动注册,相同环境下服务直接注册可能会被其他同事所调用。相当于提供多个provider,使用loadbalance策略。

           2.本地consumer无法访问到自己已修改provider。

 

解决:很简单!

          1.服务不用注册到Zookeeper注册中心。

          2.本地consumer点对点直连该服务。

 

本机提供者服务不想Zookeeper注册服务(这样做使得他人条用不了自己的本机服务,因为服务还不稳定)

<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" register="false" file="d://1.text" />

在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表,A接口配置点对点,不影响B接口从注册中心获取列表。

  • 如果是线上需求需要点对点,可在<dubbo:reference>中配置url指向提供者,将绕过注册中心,多个地址用分号隔开,配置如下:(1.0.6及以上版本支持)

<dubbo:reference interface="com.alibaba.xxx.XxxService" url="dubbo://localhost:20890" />

  • 在JVM启动参数中加入-D参数映射服务地址,如:(key为服务名,value为服务提供者url,此配置优先级更高,1.0.15及以上版本支持)

java -Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890

        注意:为了避免复杂化线上环境,不要在线上使用这个功能,只应在测试阶段使用。

  • 如果服务比较多,也可以用文件映射,如:(用-Ddubbo.resolve.file指定映射文件路径,此配置优先级高于<dubbo:reference>中的配置,1.0.15及以上版本支持)(2.0以上版本自动加载$(user.home)/dubbo-resolve.properties文件,不需要配置)

java Ddubbo.resolve.file=xxx.properties

        然后再映射文件xxx.properties中加入:(key为服务名,value为服务提供者url)

com.alibaba.xxx.XxxService=dubbo://localhost:20890

        注意:为了避免复杂化线上环境,不要在线上使用这个功能,只应在测试阶段使用。

 

spring cloud 的处理与dubbo类似。

只需要将需要的调式的服务不要注册到注册中心就行了。

eureka:
  client:
    fetch-registry: true #是否检索服务
    register-with-eureka: false #表示不向Eureka注册自身服务

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值