第2节-如何通过网关调用微服务接口?
本节介绍怎么通过网关调用微服务接口。分为4个步骤:
- 启动注册中心
- 启动微服务
- 启动网关
- 访问服务
1. 启动注册中心
本文使用
eureka
作为注册中心使用。示例:wueasy-cloud-eureka
1.1 引入依赖依赖
引入
eureka
注册中心服务器的依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
1.2 修改配置
修改端口为
8000
和注册中心服务端配置
server:
port: 8000
eureka:
instance:
hostname: 127.0.0.1
prefer-ip-address: true
client:
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
registerWithEureka: false #为false意味着自身仅作为服务器,不作为客户端;
fetchRegistry: false #为false意味着无需注册自身。
server:
responseCacheUpdateIntervalMs: 3000 #eureka server刷新readCacheMap的时间,注意,client读取的是readCacheMap,这个时间决定了多久会把readWriteCacheMap的缓存更新到readCacheMap上 #默认30s
responseCacheAutoExpirationInSeconds: 180 #eureka server缓存readWriteCacheMap失效时间,这个只有在这个时间过去后缓存才会失效,失效前不会更新,过期后从registry重新读取注册服务信息,registry是一个ConcurrentHashMap。 #默认180s
eviction-interval-timer-in-ms: 3000 #启用主动失效,并且每次主动失效检测间隔为3s
1.3 启动服务
执行启动类,启动服务
@SpringBootApplication
@EnableEurekaServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
2. 启动微服务
在第一节的基础上,增加注册中心客户端(注册本地服务)。示例:
wueasy-cloud-demo
2.1 引入依赖
增加
eureka
注册中心客户端依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.2 修改服务名称
需要修改服务名称
spring.application.name
,服务启动后,服务名称
作为本服务的唯一标识注册到注册中心。
spring:
application:
name: demo
2.3 修改注册中心
配置注册中心连接地址
eureka:
instance:
prefer-ip-address: true
lease-expiration-duration-in-seconds: 15 #服务过期时间配置,超过这个时间没有接收到心跳EurekaServer就会将这个实例剔除
lease-renewal-interval-in-seconds: 5 #服务刷新时间配置,每隔这个时间会主动心跳一次
client:
registryFetchIntervalSeconds: 5 #client刷新本地缓存时间
serviceUrl:
defaultZone: http://127.0.0.1:8000/eureka/
ribbon:
serverListRefreshInterval: 5000 #eureka客户端ribbon刷新时间
2.4 修改启动类,启动服务
在启动类上,增加注解
@EnableDiscoveryClient
,注册服务。执行启动类,启动服务。
/**
* 启动类
* @author: fallsea
* @version 1.0
*/
@SpringBootApplication
@EnableDiscoveryClient
@ComponentScan(value= {"com.wueasy"})
public class Application
{
public static void main(String[] args) {
//负责启动引导应用程序
SpringApplication.run(Application.class, args);
}
}
3. 启动网关
网关作为接口的访问入口。示例:
wueasy-cloud-gateway
3.1 引入依赖
引入网关服务
wueasy-cloud-gateway
<dependency>
<groupId>com.wueasy</groupId>
<artifactId>wueasy-cloud-gateway</artifactId>
<version>最新版本</version>
</dependency>
引入
eureka
注册中心客户端
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
3.2 修改网关端口
网关端口修改为
8088
server:
port: 8088
3.3 修改服务名称
需要修改微服务名称
spring.application.name
,目前设置的为gateway
spring:
application:
name: gateway
3.4 修改网关路由信息
修改网关路由信息,路由至微服务。
spring:
cloud:
gateway:
discovery:
locator:
enabled: false
lowerCaseServiceId: true
routes:
- id: demo
uri: lb://DEMO #路由url
predicates:
- Path=/demo/** #访问路径,根目录路径,配置后,访问此路径都会路由到uri服务
filters:
- StripPrefix= 1 #去掉根目录路径
3.5 修改注册中心地址
修改注册中心连接信息。
eureka:
instance:
prefer-ip-address: true
lease-expiration-duration-in-seconds: 15 #服务过期时间配置,超过这个时间没有接收到心跳EurekaServer就会将这个实例剔除
lease-renewal-interval-in-seconds: 5 #服务刷新时间配置,每隔这个时间会主动心跳一次
client:
registryFetchIntervalSeconds: 5 #client刷新本地缓存时间
serviceUrl:
defaultZone: http://127.0.0.1:8000/eureka/
ribbon:
serverListRefreshInterval: 5000 #eureka客户端ribbon刷新时间
4. 测试接口
通过访问网关服务http://localhost:8088/demo/get
,验证接口是否正常,如果接口正常返回数据,那么接口调用成功。
{
"errorNo":0,
"data":"551215"
}