问题记录
前提:
- 在父项目下创建了两个子项目: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