【Spring Cloud Alibaba】Gateway 分布式网关

1、Spring Cloud Gateway

分布式网关主要是统一调度各个服务之间的协调关系,如果说没有统一的网关,每个服务都给前端开发人员提供一个接口调用地址,这是一件非常变态的事,有了网关之后,就可以实现统一调度了,只需要给前端开发人员一个服务调用地址,调用不通的接口,即可完成服务分发与接口调用,是不是特别方便

下面我们通过实例来分析,Gateway 网关的实战作用,首先我们需要一个服务提供者,因为我们前面已经写了很多的服务了,我这里就挑选了两个,一个服务提供者,一个服务消费者,我们再建一个网关来统一处理测试网关的实战作用

下图就是网关调用消费者,消费者通过 OpenFeign 调用服务提供者【Spring Cloud Alibaba】Gateway 分布式网关因为前面已经使用过了,这里就直接复用就可以了,并且两个都注册到了 Nacos

  • spring-cloud-alibaba-ribbon-consumer 服务消费者:https://gitee.com/tellsea/spring-cloud-alibaba-learn/tree/master/spring-cloud-alibaba-ribbon-consumer
  • spring-cloud-alibaba-ribbon-provider 服务提供者:https://gitee.com/tellsea/spring-cloud-alibaba-learn/tree/master/spring-cloud-alibaba-ribbon-provider

两个服务的构建 【Spring Cloud Alibaba】Ribbon 负载均衡器:https://blog.csdn.net/qq_38762237/article/details/122086619

2、构建网关服务

创建 spring-cloud-alibaba-gateway 模块,并增加 spring-cloud-starter-gateway 依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

这里有个细节点,不能再依赖中增加 web 模块的依赖,否则启动报错

修改 application.properties 配置文件

server.port=8085
spring.application.name=spring-cloud-alibaba-gateway
management.server.port=9095
management.endpoints.jmx.exposure.include=*
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always

#
 Nacos注册信息
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.namespace=sandbox-configuration

#
 gateway配置
spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.routes[0].id=spring-cloud-alibaba-ribbon-consumer
spring.cloud.gateway.routes[0].uri=lb://spring-cloud-alibaba-ribbon-consumer
spring.cloud.gateway.routes[0].predicates[0]=Path=/feign/**

就多了网关代理配置,可以配置多种形式的网关,启动类增加注解

@EnableDiscoveryClient

到这里,网关就配置完成了,是不是特别简单呀,接下来启动三个服务

【Spring Cloud Alibaba】Gateway 分布式网关三个服务的端口如下

  • spring-cloud-alibaba-gateway:8085
  • spring-cloud-alibaba-ribbon-consumer:8002
  • spring-cloud-alibaba-ribbon-provider:8000
直接访问

http://localhost:8002/feign/ribbon/message/Tellsea

返回内容

[端口:]8000,消息:Tellsea

说明消费者调用服务提供者没问题,接下来通过网关访问消费者

http://localhost:8085/feign/ribbon/message/Tellsea

同样返回消息

[端口:]8000,消息:Tellsea

OK,到此网关配置完成

微信公众号


原文始发于微信公众号(花海里):【Spring Cloud Alibaba】Gateway 分布式网关

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/69476.html

(2)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!