1、Spring Cloud Gateway
分布式网关主要是统一调度各个服务之间的协调关系,如果说没有统一的网关,每个服务都给前端开发人员提供一个接口调用地址,这是一件非常变态的事,有了网关之后,就可以实现统一调度了,只需要给前端开发人员一个服务调用地址,调用不通的接口,即可完成服务分发与接口调用,是不是特别方便
下面我们通过实例来分析,Gateway 网关的实战作用,首先我们需要一个服务提供者,因为我们前面已经写了很多的服务了,我这里就挑选了两个,一个服务提供者,一个服务消费者,我们再建一个网关来统一处理测试网关的实战作用
下图就是网关调用消费者,消费者通过 OpenFeign 调用服务提供者因为前面已经使用过了,这里就直接复用就可以了,并且两个都注册到了 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: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