Apache Dubbo使用遇到问题记录(一)

1,990 阅读1分钟

问题记录

前提:

  • 在父项目下创建了两个子项目:provider(服务提供方)和consumer(服务消费方)。
  • 父项目相关依赖:
dependencies {
        compile 'ch.qos.logback:logback-classic:1.2.3'
        compile 'com.alibaba:fastjson:1.2.49'
        implementation "com.alibaba.cloud:spring-cloud-alibaba-dependencies:${alibabaCloudVersion}"
        implementation "org.springframework.cloud:spring-cloud-dependencies:${cloudVersion}"
        implementation "org.springframework.boot:spring-boot-dependencies:${bootVersion}"
    }
  • 子项目依赖
dependencies {
    implementation "org.springframework.boot:spring-boot-starter-web:${bootVersion}"
    implementation "com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config:${alibabaCloudVersion}"
    implementation "com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:${alibabaCloudVersion}"
    implementation "com.alibaba.cloud:spring-cloud-starter-dubbo:${alibabaCloudVersion}"
    implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0'
    compile project(':Common')
}
  • 相关版本
alibabaCloudVersion=2.2.5.RELEASE
cloudVersion=Hoxton.SR8
bootVersion=2.3.2.RELEASE

1. 问题一

问题描述

在consumer未指定dubbo.protocol.port参数情况,同时启动consumer和provider,其中一个项目报错:端口20880被占用

产生原因

dubbo.protocol.port默认为20880,两个子项目都没有指定端口号时,其中一个项目启动后,占用端口20880并将服务注册到nacos服务中心了。

解决方法

修改其中一个项目的配置文件:为dubbo.protocol.port指定未占用端口。

2. 问题二

问题描述

启动consumer和provider子项目之后,控制台提醒

Current application will subscribe all services(size:3) in registry, a lot of memory and CPU cycles may be used, thus it's strongly recommend you using the externalized property 'dubbo.cloud.subscribed-services' to specify the services

产生原因

dubbo.cloud.subscribed-services默认为*(即全部),在未指定情况下,当前项目将订阅注册到服务中心的全部服务,可能导致大量的内存和CPU被占用。所以Dubbo友情提醒指定项目需要订阅的服务。

解决方法

修改配置文件,指定当前项目需要订阅的服务。dubbo.cloud.subscribed-services