一开始之前怎么配置都不能运行,会绕过远程连接的地址直接去链接127.0.0.1:2181这个地址,一直报错。再换回去单注册中心还是会一直多连一个莫须有的注册中心一直一直启动不开。类似于下面这样 ,因为我本地是没有这个zk的 我都是装到虚拟机里面了

Initiating client connection, connectString=127.0.0.1:2182 sessionTimeout=60000 watcher=org.apache.curator.ConnectionState@310b2b6f

Default schema

Opening socket connection to server 127.0.0.1/127.0.0.1:2182. Will not attempt to authenticate using SASL (unknown error)

Started DudemoProviderApplication in 11.431 seconds (JVM running for 12.39)

Socket error occurred: 127.0.0.1/127.0.0.1:2182: Connection refused: no further information

Opening socket connection to server 127.0.0.1/127.0.0.1:2182. Will not attempt to authenticate using SASL (unknown error)

 找好多天看源码根本看不出原因(看不懂),后来看我的配置我把注册中心 

dubbo.metadata-report.address=zookeeper://47.100.58.201:2181,47.100.58.201:2182 给从最下面放到最上面了启动了一下发现好了。也不清楚为什么可能是加载顺序没有固定的么 所以应该是先加载这些。但是最后放回最下面也没有报错不清楚为什么,如果有类似情况的可以试一下这个

下面是多注册中心配置

首先是服务提供者的provider

#端口配置
server.port=8888

## Dubbo 服务提供者配置

#元数据设置最好放到最上面防止出错 我也不知道为什么 放到下面一直报错会自己去找127.0.0.1:2181
# 移到上面就好了然后再放下去也不会报错可能是缓存缘故吧
dubbo.metadata-report.address=zookeeper://47.173.508.201:2181,47.173.508.201:2182
#这个要加上去 不加会报错 也没有看是什么错
spring.main.allow-bean-definition-overriding=true

#默认启动的客户端
dubbo.registry.client=curator
# provider应用名称
spring.application.name=demo-provider

# Dubbo组件扫描的基础包
dubbo.scan.base-packages=com.dubbo.dudemoprovider.serviceImpl
# Dubbo 协议与端口
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
## Dubbo 多注册中心注册 这里不一定要设置成registry1和2 名字可以自己定义  是这个定义注册中心的名字
dubbo.registries.registry1.address=zookeeper://47.173.508.201:2181
dubbo.registries.registry2.address=zookeeper://47.173.508.201:2182
#设置默认  其实这个不知道设置不设置 应该放上去没问题  因为设置默认之后应该就不用加配置也会将服务注册到这个注册中心里面了
dubbo.registries.registry2.default=true
#单注册中心路连接方式
#dubbo.registry.address=zookeeper://47.173.508.201:2182

 

@Component
//将服务注册到两个不同的注册中心上
@Service(version="1.0.0",registry = {"registry1","registry2"})
public class UserInfoISVImpl implements UserInfoISV{


    @Override
    public String sayHello(String name) {
        return "你好呀,"+name+"先生!";
    }
}

消费者consumer


server.port=8063



spring.application.name=demo-consumer
dubbo.scan.base-packages=com.dudemo.dudemoconsumer

dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
#单注册中心注册方式
#dubbo.registry.address=zookeeper://47.100.58.201:2181
#多注册中心注册方式  这里不一定要设置成registry1和2 名字可以自己定义  是这个定义注册中心的名字
dubbo.registries.registry1.address=zookeeper://47.100.58.201:2181
dubbo.registries.registry2.address=zookeeper://47.100.58.201:2182
#设置默认的注册中心
dubbo.registries.registry2.default=true

spring.main.allow-bean-definition-overriding=true
@RestController
@RequestMapping("/user")
public class UserController {
    //将服务注册到不同的注册中心,从不同的注册中心取
    @Reference(version="1.0.0",registry = "registry1")
    private UserInfoISV userInfoISV1;
    @Reference(version="1.0.0",registry="registry2")
    private UserInfoISV userInfoISV2;

    @GetMapping("/hello1/{name}")
    public String sayHello(@PathVariable("name")String name)throws Exception{
        System.out.println("调用了第一个地址");
        return userInfoISV1.sayHello(name);
    }
    @GetMapping("/hello2/{name}")
    public String sayHello2(@PathVariable("name")String name)throws Exception{
        System.out.println("调用了第二个地址");
        return userInfoISV2.sayHello(name);
    }


}

没有人教全是自己自学找材料找文档,所以还是希望社区活跃一点,不至于出现问题找不到解决办法。