接入Spring Cloud Gateway 作为Dubbo的网关

归云
归云
发布于 2021-11-12 / 2588 阅读
0
0

接入Spring Cloud Gateway 作为Dubbo的网关

最近我打算自己封装一套微服务的模板作为日常开发使用

使用的微服务框架是Dubbo,注册中心为Nacos

但大多数Dubbo应用,大多都是使用nginx负载均衡,在web层进行鉴权,但是没有一个成熟的Api网关

这是我就想到可以通过Nacos接入 Spring Cloud 体系下的 Spring Cloud Gateway 作为Dubbo的网关,用来替代传统Dubbo应用下的Nginx,并且可以将鉴权移至网关处

Dubbo 工程

这里我使用 官方的Dubbo Spring Cloud 示例工程,具体的代码和教程可以看下面的链接

https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/spring-cloud-alibaba-dubbo-examples/README_CN.md

网关开发

https://start.spring.io/ 选择Gateway,并下载

首先要添加依赖

implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer:3.0.4'
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap:3.0.4'
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2021.1'
  • 记得一点要添加spring-cloud-starter-loadbalancer 这个依赖,不然转发的时候会有503的bug

配置修改

bootstrap.yaml

server:
  port: 8000

spring:
  application:
    name: app-gateway
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848

application.yaml

spring:
  cloud:
    gateway:
      discovery:
        locator:
          lowerCaseServiceId: true
          enabled: true
      routes:
        - id: app-client
          uri: lb://spring-cloud-alibaba-dubbo-client
          predicates:
            - Path=/app-client/**
          filters:
            - StripPrefix=1

请求 http://localhost:8000/app-client/echo?message=guiyun

这样服务器通过网关,调用spring-cloud-alibaba-dubbo-client服务

返回[echo] Hello, guiyun ,这样就调用成功了


评论