但大数量的微服务并不利于系统开发,每个服务都有不同的网络地址,客户端在请求不同的微服务需要调用不同的URL,同时维护多个URL将增加开发的成本。
为统一管理不同微服务的URL,增强系统的维护性,采用一种解决方案:API网关。使用API网关对所有的API请求进行管理维护,为系统开放一个统一的接口,所有的外部请求只需要访问这个统一的入口即可,系统内部通过API网关映射到不同的微服务。
Zuul
Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。Spring Cloud集成了Zuul,因此我使用Zuul来实现这个微服务网关。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>- 在resources路径下创建配置文件application.yml,添加网关的相关配置。
server:
port: 8030
spring:
application:
name: gateWay
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
zuul:
routes:
provider: /p/**说明:zuul.routes.*:自定义微服务的访问路径,例如这里的zuul.routes.provider: /p/**,就是将provider微服务映射到gateWay的/p/**路径下。- 在java路径下床见启动类GateWayApplication。
@EnableZuulProxy
@EnableAutoConfiguration
public class GateWayApplication {
public static void main(String[] args) {
SpringApplication.run(GateWayApplication.class,args);
}
}@EnableZuulProxy是@EnableZuulServer的超集,拥有@EnableZuulServer中的所有过滤器。此外还加入了@EnableCircuitBreaker与@EnableDiscoveryClient。@EnableCircuitBreaker 是实现熔断处理的注解,@EnableDiscoveryClient注解是将服务注册到服务中心,并发现服务的。- 依次启动注册中心、服务提供者provider,运行GateWayApplication。启动成功后访问http://localhost:8761.
- 可以发现服务提供者provider和网关gateway都已完成注册,接下来便通过http://localhost:8030/p/**访问provider提供的服务了,如通过Postman测试http://localhost:8030/p/actor/findAll
- 实际情况下我的服务可能多达十多个,那我是不是需要在zuul:routes 下面去一一配置呢?其实不必。Spring Cloud Zuul提供了默认配置,Zuul会代理所有注册到Eureka Server的微服务,并根据路由规则{http://ZUUL_HOST:ZUUL_PORT/微服务在Eureka上的serviceId/**}进行转发。
server:
port: 8030
spring:
application:
name: gateWay
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
#zuul:
# routes:
# provider: /p/**重新启动后,访问http://localhost:8030/provider/actor/findAll。得到同样的结果,说明Spring Cloud Zuul默认提供了转发功能。 至此一个简单的使用Zuul实现服务网关的例子就完成了。当然实例中展示的是最简单的路由功能,实际上为了做安全限制,需要添加过滤器和拦截器对请求进行过滤。Zuul可以配置复杂的路由过滤规则,如自带的前置过滤器PreDecorationFilter;路由过滤器RibbonRoutingFilter、SimpleHostRoutingFilter。如果觉得这些过滤器不符合要求,还可以通过继承ZuulFilter 类来自定义过滤器。




Betway Casino: Safe or Scam? - DrmCD
ReplyDeleteAre you on edge over your gaming 화성 출장마사지 cage? 전주 출장안마 Or just 남양주 출장마사지 looking for an alternative to some casino? Our experts explain. 정읍 출장샵 Rating: 4.1 · 안동 출장안마 2 votes