Spring Cloud微服务系列文章,点击上方合集↑
1. 简介
微服务架构中,单个应用会被划分成多个子服务,客户端访问这些服务时,需要考虑每个服务的访问地址,这个过程会比较复杂。而Gateway将这些微服务进行统一管理,对外提供一个「统一的访问地址」,并将请求由网关路由到对应的子服务上去,从而提高系统的效率和可维护性。
2. gateway-service
创建 gateway-service
模块
2.1 pom.xml
添加如下依赖
-
spring-cloud-starter-alibaba-nacos-discovery
服务注册与发现依赖 -
spring-cloud-starter-gateway
网关依赖 -
spring-cloud-loadbalancer
负载均衡依赖
<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>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
2.2 application.properties
nacos相关配置和网关相关配置
# 应用名称
spring.application.name=gateway-service
server.port=10000
# nacos
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.server-addr=http://localhost:8848
# gateway
spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.discovery.locator.lower-case-service-id=true
2.3 MyFilter
自定义过滤器,打印请求的路径。类似:/consumer-service/consumer/test
。我们后续可以在网关过滤器做一些权限认证等操作。
@Component
public class MyFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
ServerHttpRequest request = exchange.getRequest();
String path = request.getPath().toString();
// 打印请求路径,生产环境可以在此做一些权限认证等
System.out.println(path);
return chain.filter(exchange);
}
}
3. 测试
请求地址类型是服务名加上接口:http://ip/服务名/接口url
http://localhost:10000/consumer-service/consumer/test?name=zhangsan
gateway-service
->consumer-service
->provider-service
4. 总结
Gateway提供了一个「单一的入口点」,用于管理所有的服务请求。
在实际项目部署中,用户的请求在外网(公网)通过nginx
转发到内网网关gateway
,然后gateway
会去调用具体的服务处理请求。
加上网关后整体的架构如下:


Spring Cloud 微服务系列 完整的代码在仓库的sourcecode/spring-cloud-demo
目录下。
gitee(推荐):https://gitee.com/cunzaizhe/xiaohuge-blog
github:https://github.com/tigerleeli/xiaohuge-blog
关注微信公众号:“小虎哥的技术博客”,让我们一起成为更优秀的程序员❤️!
原文始发于微信公众号(小虎哥的技术博客):Gateway 网关
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/169783.html