优惠券项目-网关服务

101 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 6 天,点击查看活动详情

1.新增modules

image.png

2.创建之后根目录的pom.xml文件

image.png

3.配置pom.xml文件

image.png

3.1配置打包格式

<packaging>jar</packaging>

3.2配置依赖

    <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>
    <!-- apache 工具类 -->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>16.0</version>
    </dependency>
</dependencies>

Eureka工作原理:

  • Eureka 客户端, 客户端向 Eureka Server 注册的时候会提供一系列的元数据信息, 例如: 主机, 端口, 健康检查url等
  • Eureka Server 接受每个客户端发送的心跳信息, 如果在某个配置的超时时间内未接收到心跳信息, 实例会被从注册列表中移除
    依赖说明:
  • spring-cloud-starter-netflix-zuul,引入zuul组件
  • 引入commons-io和com.google.guava

3.3配置插件

image.png

4.新建启动类

新增com.imooc.coupon包并且新建ZuulGatewayApplication启动类 image.png

package com.imooc.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@EnableZuulProxy
@SpringCloudApplication
public class ZuulGatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZuulGatewayApplication.class,args);
    }
}

代码说明:

@EnableZuulProxy 开启网关代理
@SpringCloudApplication 加载springCloud

跟踪源码:可以看到包含EnableDiscoveryClient(服务发现)和 @EnableCircuitBreaker服务熔断相关 image.png EnableCircuitBreaker:服务熔断

5.新增yml配置文件

server:
  port: 9000

spring:
  application:
    name: coupon-gateway

eureka:
  client:
    service-url :
      defaultZone : http://server1:8001/eureka/

代码说明:

6.启动ZuulApplicaion应用

image.png

7.验证是否成功搭建网关服务

浏览器访问:http://127.0.0.1:8001/ 截图如下: image.png 可以看到,coupon-gateway已经正常出现在副本中