Gateway 网关

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会去调用具体的服务处理请求。

加上网关后整体的架构如下:

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

(0)
小半的头像小半

相关推荐

发表回复

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