3 月,跳不动了?>>>
前两篇文章我们已经初步的完成了一个小型的微服务框架,有服务注册中心,有订单服务,也有库存服务;订单服务也能通过feign进行服务间调用库存服务。那本文我们将引入服务网关Spring Cloud Gateway。
Spring Cloud Gateway旨在提供一种简单而有效的方法来路由到API。Spring Cloud Gateway是基于Spring Framework5,Spring Boot 2.0构建的。Spring Cloud Gateway是Spring开发并用来替代Zuul的。Spring Cloud Gate是基于Spring Framework5的WebFlux实现的。
Zuul和Spring Cloud Gateway的对比大家请参考这篇文章:https://www.cnblogs.com/yizhishi/archive/2019/09/26/11588860.html
接下来我们开始引入Spring Cloud Gateway。
按照第二篇文章创建一个module,起名为server-gateway。
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这里我们同样将gateway注册到eureka。
@SpringBootApplication
@EnableEurekaClient
public class ServerGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(ServerGatewayApplication.class, args);
}
}
这里只需要加上eureka客户端的注解即可
server.port=10010
spring.application.name=server-gateway
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
eureka.instance.instance-id=${spring.application.name}:${server.port}
# 路由到app-storage服务
spring.cloud.gateway.routes[0].id=app-storage
spring.cloud.gateway.routes[0].uri=lb://APP-STORAGE
spring.cloud.gateway.routes[0].predicates[0]=Path=/storage/v1/**
spring.cloud.gateway.routes[0].filters[0]=StripPrefix=2
# 路由到app-order服务
spring.cloud.gateway.routes[1].id=app-order
spring.cloud.gateway.routes[1].uri=lb://APP-ORDER
spring.cloud.gateway.routes[1].predicates[0]=Path=/order/v1/**
spring.cloud.gateway.routes[1].filters[0]=StripPrefix=2
这里我们着重介绍下,怎么配置路由,以app-storage为例。
好了,这里我们就可以通过网关访问app-storage和app-order服务了
依次启动server-eureka,server-gateway,app-storage,app-order
访问 http://127.0.0.1:10010/order/v1/order/placeOrder/commit ,我们上一篇文章写好的下单接口。因为我们加了请求前缀order/v1,所以再这里要加上。
如果返回true,代表网关配置成功。
网关如果只是用来路由就没有必要上Spring Cloud Gateway了,nginx就可以搞定了,路由仅仅是网关的基本本能,基于网关我们可以做接口鉴权,限流等。下一篇文章我们讲讲怎么通过网关鉴权
米鼠网自成立以来一直专注于从事软件项目、人才招聘、软件商城等,始终秉承“专业的服务,易用的产品”的经营理念,以“提供高品质的服务、满足客户的需求、携手共创双赢”为企业目标,为中国境内企业提供国际化、专业化、个性化、的软件项目解决方案,我司拥有一流的项目经理团队,具备过硬的软件项目设计和实施能力,为全国不同行业客户提供优质的产品和服务,得到了客户的广泛赞誉。
评论留言