第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"
}
Copyright © wueasy.com 2017-2022 all right reserved,powered by Gitbook未经允许,禁止以任何形式传播 修订时间: 2022-09-04

results matching ""

    No results matching ""