1、添加配置jar包
<dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.4.1</version> </dependency> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-actuator</artifactId> <version>2.7.4.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.8.0</version> </dependency>
说明:不同的springboot版本对应的dubbo版本以及 dubbo-spring-boot-starter 版本是不一样的,需要上GitHub上去查找对应的关系
2、添加dubbo配置
dubbo: protocol: name: dubbo port: 20888 协议端口号,消费者的协议端口号可随意配置 registry: address: zookeeper:2181?timeout=60000 protocol: zookeeper application: name: diagnosis_gas id: diagnosis_gas scan: base-packages: cc.eslink 服务提供方所在的包位置
3、巨坑-服务消费者获取不到服务提供者提供的服务
3.1 如图,dubbo-admin可以查找的服务
说明:机器显示的IP 和端口,是服务提供者实际的IP地址和暴露的服务,并非是注册中心Zookeeper的地址,这个地址就是服务提供方注册到
zookeeper上的地址,zookeeper会通过该地址寻找服务。
3.2 注册的地址是内网地址还是外网地址
说明:注册的地址是内网地址,dubbo注册服务默认都是内网地址,若要让注册的服务是外网地址,需要修改hosts映射的地址,一般服务器映射的都是
内网地址,这里可以改成外网地址,这样注册的就是外网地址
3.3 为什么服务访问不到
说明:当消费者去消费服务的时候,通过外网地址连接到zookeeper上,zookeeper去查找提供的服务,但是提供的服务是内网地址,没法和消费者
建立连接,服务是不通的,所以没法提供服务
3.4 怎么解决消费不到的情况
1、把hosts内网地址,改成外网地址,这样暴露的服务就是外网地址,我们通过外网就可以访问了
2、服务提供者和消费者都在同一台服务器上,这样内网之间的网络是通的,也是可以进行访问的
参考博客:https://blog.51cto.com/u_12270378/2809505
4、巨坑-zk明明可以ping通,但是就是连接不上
说明:zookeeper的外网地址,是可以ping通的,且端口也是可以通信的,但是就是连接不上
原因:zookeeper的默认超时时间是5毫秒,时间太短了,还没连接上就端口了
方法:配置zookeeper连接的时候,带上超时时间
如下:address="zookeeper://106.75.177.44:2181?timeout=600000"
参考博客:https://zhuanlan.zhihu.com/p/343204228
标签:dubbo,zookeeper,服务,springboot,巨坑,地址,org,内网 From: https://www.cnblogs.com/xzlnuli/p/18433508