搭建 Eureka 服务

目录

  1. Spring Cloud Eureka
    1. 启动 Spring Cloud Eureka 服务
    2. Spring Cloud Eureka 客户端的配置和使用
      1. 获取 Eureka服务列表
      2. 注册服务

Spring Cloud Eureka

Eureka是Netflix开源的基于Jersey框架实现的REST服务注册中心。Spring Cloud 在次基础之上进行了封装纳入到Spring Cloud体系中。

启动 Spring Cloud Eureka 服务

Spring cloud Eureka 主要依赖 org.springframework.cloud:spring-cloud-starter-netflix-eureka-server,快速启动可以配置如下:

<properties>
     <java.version>1.8</java.version>
     <spring-cloud.version>Hoxton.SR5</spring-cloud.version>
 </properties>

 <dependencies>
     <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
     </dependency>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-security</artifactId>
     </dependency>
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
         <exclusions>
             <exclusion>
                 <groupId>org.junit.vintage</groupId>
                 <artifactId>junit-vintage-engine</artifactId>
             </exclusion>
         </exclusions>
     </dependency>
 </dependencies>

项目资源文件的配置文件bootstrap.yml或者application.properties的配置如下:

server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
  security:
    user:
      name: account
      password: password

由于引入security框架,所以需要将没有必要做权限校验的路基过滤调。

@EnableWebSecurity
public class CustomConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().ignoringAntMatchers("/eureka/**");
        super.configure(http);
    }
}

配置项目入口:

@SpringBootApplication
@EnableEurekaServer
public class EurekatestApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekatestApplication.class, args);
    }
}

Eureka 服务不需要配置数据库,所有注册的服务地址都存在本地内存。本地可用服务信息会保留一小段时间,之后如果没有心跳请求告诉Eureka服务,那么可用服务将会从内存中删除。所以客户端需要维持心跳请求,保障服务在过期时间内不断续约。Eureka 客户端会保留一份可用服务的缓存,如此可以避免每次请求都访问Eureka服务获取最新的可用服务列表。

Eureka 服务一般建议部署成集群,减少单点故障的风险。默认情况下Eureka服务同时也是Eureka客户端,通过配置信息了解其他集群节点的位置,并维持同样一份可用服务列表。单独部署一台Eureka服务也是能够正常提供服务注册服务,但是会通过日志大量记录无法注册到其他Eureka服务的信息。

默认注册到 Eureka 服务的服务名称是域名加端口好,但是如果应用无法识别域名,那么会将IP地址注册到 Eureka 中。eureka.instance.hostname 可以指定服务的域名,如果有该配置,应用则直接将该域名注册到 Eureka 中。如果希望能够使用IP地址注册,可以通过eureka.instance.preferIpAddress = true 实现。

Spring Cloud Eureka 客户端的配置和使用

获取 Eureka服务列表

Spring cloud Eureka 客户端主要依赖 org.springframework.cloud:spring-cloud-starter-netflix-eureka-client,快速启动可以配置如下:

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
     <exclusions>
         <exclusion>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-ribbon</artifactId>
         </exclusion>
         <exclusion>
             <groupId>com.netflix.ribbon</groupId>
             <artifactId>ribbon-eureka</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

Eureka 客户配置 Eureka 服务地址

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

鉴于 Eureka 服务引入security框架,所以还需要配置用户账号密码

spring:
  security:
    user:
      name: username
      password: password

注册服务

以上配置完毕后可以从Eureka中获取可用服务列表。但是除此之外我们还需要将服务注册到Eureka中。

eureka:
  instance:
    status-page-urlPath: /info
    healthCheckUrlPath: /health
    prefer-ip-address: true
    instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${spring.application.instance_id:${server.port}}
    appname: ${spring.application.name}
    lease-renewal-interval-in-seconds: 5
    lease-expiration-duration-in-seconds: 10

instance相关配置在org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean以属性的方式存在,可以根据业务情况更改默认值。

配置程序入口:

@SpringBootApplication
@EnableEurekaClient
public class ConfigserverApplication {

    public static void main(String[] args) throws SocketException {
        ApplicationContext ac = SpringApplication.run(ConfigserverApplication.class, args);
    }
}

程序启动后服务将会自动注册到Eureka中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值