本项目是搭建基于nacos注册中心的springcloud,集成dubbo框架,使用zuul网关和gateway网关
一、框架搭建
(1)项目结构
micro-service 服务提供者
zuul-gateway zuul网关
springcloud-gateway gateway网关
class-provider duboo提供者
user-provider duboo提供者
duboo-consumer duboo消费者
dubbo-interface duboo接口api
(2)环境
nacos 1.4.1
springboot 2.1.9
springcloud Greenwich
dubbo 2.7.6
注:nacos搭建
二、项目配置application.yaml
127.0.0.1为本地nacos地址
(1)micro-service
spring:application:name: micro-serviceprofiles:active: devjackson:time-zone: GMT+8date-format: yyyy-MM-dd HH:mm:ssdefault-property-inclusion: ALWAYScloud:nacos:discovery:server-addr: 127.0.0.1:8848server:port: 8081
(2)zuul-gateway
spring:application:name: zuul-gatewayprofiles:active: devjackson:time-zone: GMT+8date-format: yyyy-MM-dd HH:mm:ssdefault-property-inclusion: ALWAYScloud:nacos:discovery:server-addr: 127.0.0.1:8848server:port: 8082zuul:strip-prefix: true #转发路径截断匹配前缀
# prefix: "/api"add-proxy-headers: falseset-content-length: truesemaphore:max-semaphores: 600hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 120000
ribbon:ReadTimeout: 240000ConnectTimeout: 2000MaxAutoRetries: 0MaxAutoRetriesNextServer: 1eager-load:enabled: trueclients: micro-service
(3) springcloud-gateway
spring:application:name: springcloud-gatewayprofiles:active: devjackson:time-zone: GMT+8date-format: yyyy-MM-dd HH:mm:ssdefault-property-inclusion: ALWAYScloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:discovery:locator:enabled: truelower-case-service-id: truehttpclient:connect-timeout: 60000response-timeout: 5sroutes:- id: micro-service1uri: lb://micro-servicepredicates:- Path=/micro-service1/**filters:- StripPrefix=1
server:port: 8083hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 120000
ribbon:ReadTimeout: 240000ConnectTimeout: 2000MaxAutoRetries: 0MaxAutoRetriesNextServer: 1eager-load:enabled: trueclients: micro-service
(4)user-provider
dubbo:registry:address: spring-cloud://${spring.cloud.nacos.discovery.server-addr}protocol:name: dubboport: -1scan:base-packages: com.mk.springcloud.dubbocloud:subscribed-services: ''spring:application:name: user-providerprofiles:active: devjackson:time-zone: GMT+8date-format: yyyy-MM-dd HH:mm:ssdefault-property-inclusion: ALWAYSmain:allow-bean-definition-overriding: truecloud:nacos:discovery:server-addr: 172.0.0.1:8848server:port: 8084feign:hystrix:enabled: truelogBack:logPathDir: ${logPathDir:./log/${spring.application.name}}
(5)class-provider
dubbo:registry:address: spring-cloud://${spring.cloud.nacos.discovery.server-addr}protocol:name: dubboport: -1scan:base-packages: com.mk.springcloud.dubbocloud:subscribed-services: user-provider
# consumer:
# check: falsespring:application:name: class-providerprofiles:active: devjackson:time-zone: GMT+8date-format: yyyy-MM-dd HH:mm:ssdefault-property-inclusion: ALWAYSmain:allow-bean-definition-overriding: truecloud:nacos:discovery:server-addr: 172.0.0.1:8848server:port: 8085feign:hystrix:enabled: truelogBack:logPathDir: ${logPathDir:./log/${spring.application.name}}
(6)dubbo-consumer
dubbo:registry:address: spring-cloud://${spring.cloud.nacos.discovery.server-addr}protocol:name: dubboport: -1scan:base-packages: com.mk.springcloud.dubbocloud:subscribed-services: user-provider,class-provider
# consumer:
# check: falsespring:application:name: dubbo-consumerprofiles:active: devjackson:time-zone: GMT+8date-format: yyyy-MM-dd HH:mm:ssdefault-property-inclusion: ALWAYSmain:allow-bean-definition-overriding: truecloud:nacos:discovery:server-addr: 172.0.0.1:8848server:port: 8086logBack:logPathDir: ${logPathDir:./log/${spring.application.name}}
dubbo.register配置可以写成其他方式,程序只取spring-cloud://这个协议头,如:
dubbo:registry:address: spring-cloud://localhost
dubbo.scan.base-packages必须填写,否则dubbo不会注册dubbo接口服务
dubbo:scan:base-packages: com.mk.springcloud.dubbo
三、dubbo存在的问题
consumer先启动,provider后启动无法发现问题在版本spring-cloud-starter-dubbo 2.2.4.RELEASE已经解决了。
provider重启后,consumer无法自动发现provider,官方还没有给出明确的解决时间。
所以每次重启provider,都要把consumer重启一遍才能访问
四、项目地址
https://github.com/90duc/springcloud-nacos-dubbo