在此之前先科普下zuul 和feign 的区别,zuul作为整个应用的流量入口,接收所有的请求,如app、网页等,并且将不同的请求转发至不同的处理微服务模块,其作用可视为nginx。
feign则是将当前微服务的部分服务接口暴露出来,并且主要用于各个微服务之间的服务调用。
Zuul是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过微服务网关,如图
附上所需maven
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
老矩在启动类加上注解
@SpringBootApplication
@EnableZuulProxy
@EnableEurekaClient
public class ZmkjApplication {
public static void main(String[] args) {
SpringApplication.run(ZmkjApplication.class, args);
}
}
现在我们来看看配置中心,eureka的配置就不多说了,现在看看zuul的配置文件
server:
port: 9999
eureka:
client:
service-url:
defaultZone: http://${eureka.instance.hostname}:8760/eureka/
register-with-eureka: true
fetch-registry: true
instance:
hostname: localhost
zuul:
routes:
product-provider: //product-provider 这个值可以随便写,即使是一个不存在的值
path: /api/** //这个也可以随便写
service-id: springcloud-feign-ribbon //这个不能随便写,这个写成你的 application: name
ribbon:
ReadTimeout: 60000
ConnectTimeout: 60000
现在我们来测试一下,通过zuul项目代理访问feign项目,api是我刚才随便取得,他会根据 service-id: springcloud-feign-ribbon这个去注册中心找到这个名称,进行调用服务器