创建一个网关服务
1、添加pom依赖
<!--网关服务也需要注册到注册中心来获取其他服务的相关信息-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
2、启动类添加注解
@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class CustomerZuulApplication {
public static void main(String[] args) {
SpringApplication.run(CustomerZuulApplication.class, args);
}
}
3、添加yml配置
#只是单纯的作为一个eurekaClient进行注册
server:
port: 8501
spring:
application:
name: customer-zuul
eureka:
instance:
hostname: customer-zuul
client:
service-url:
defaultZone: http://eurekaServer:8700/eurekaServer/eureka
一个最基本的网关服务已经搭建完成。
基础测试
启动项目
- eurekaServer:注册中心
- eurekaClientDemo:业务demo
- customerZuul:网关服务
直接调用eurekaClientDemo服务:
调用网关服务:
这里我们看到两个服务的返回值是一样的,这次测试调用的本质就是通过网关服务调用eurekaClientDemo服务。
customerZuul请求:http://localhost:8501/test1/eureka-clinet1/ribbonTest
eurekaClientDemo请求:http://localhost:8072/eureka-clinet1/ribbonTest
两个请求对比后半部都是一样的/eureka-clinet1/ribbonTest,而test1是eurekaClientDemo的spring.application.name。
所以网关服务请求的本质就是通过网关服务调用业务服务的具体功能。
这样我们就不需要直接调用业务服务了,通过http://网关ip:网关端口/调用服务id/调用服务具体请求路径,就可以完成相关调用。