服务治理 Spring Cloud Eureka

来源:互联网 发布:南斯拉夫知乎 编辑:程序博客网 时间:2024/06/05 14:57

1.架构图



1.ServiceProvider(服务提供者)会向EurekaServerRegister(服务注册)、Renew(服务续约)、Cancel(服务下线)等操作。

2.EurekaServer之间会做注册服务的同步,从而保证状态一致,EurekaServer启动固定频率任务(默认60秒)检查租约是否到期(租约默认90秒)

3.ServiceConsumer(服务消费者)会向EurekaServer请求服务列表

2.构建服务注册中心(单点)


1.添加依赖:


<dependency>

  <groupId>org.springframework.cloud</groupId>

  <artifactId>spring-cloud-starter-eureka-server</artifactId>

</dependency>


2.配置


•server.port=1112
•spring.application.name=eureka-server
•eureka.client.fetch-registry=false(不需要从服务中心抓取注册信息)
•eureka.client.register-with-eureka=false(不需要把自己注册到服务中心)
•eureka.client.service-url.defaultZone=http://localhost:1112/eureka/
•eureka.server.enable-self-preservation=false
•#每隔多少毫秒检查服务租约是否过期(默认60秒)如果过期则剔除服务
•eureka.server.eviction-interval-timer-in-ms=1000
eureka.environment=beta 指定eureka所在的环境

3.启动

@SpringBootApplication

@EnableEurekaServer

public class EurekaServerApplication {

  public static void main(String[] args) {

  SpringApplication.run(EurekaServerApplication.class, args);

  }

}

访问http://localhost:1112


2.构建服务注册中心(高可用)

         EurekaServer的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成互相注册的

服务注册中心,以实现服务清单的互相同步,达到高可用的效果

配置如下


服务注册中心

server.port=1111

spring.application.name=eureka-server 

eureka.client.service-url.defaultZone=http://localhost:1112/eureka/(如果有多个则用逗号隔开)

服务注册中心2

server.port=1112

spring.application.name=eureka-server 

eureka.client.service-url.defaultZone=http://localhost:1111/eureka/

3.注册服务提供者

1.添加依赖

 <dependency>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-eureka</artifactId>

</dependency>

2. 配置

server.port=9527

spring.application.name=mem-favorite

#只提供服务,不消费服务,则不需要拉取服务中心信息

eureka.client.fetch-registry=false

#每隔多久向服务注册中心续约默认30

eureka.instance.lease-renewal-interval-in-seconds=30

#最后续约时间离现在超过多少秒,表示服务失效默认90

eureka.instance.lease-expiration-duration-in-seconds=90

eureka.client.service-url.defaultZone=http://localhost:1111/eureka/,http://localhost:1112/eureka/


3.启动


@SpringBootApplication

@EnableEurekaClient

public class FavoriteBootApplication {

    public static void main(String[] args) {

        SpringApplication.run(FavoriteBootApplication.class, args);

    }

}

4.服务发现与消费

1.添加依赖

<dependency>

    <groupId>org.springframework.cloud</groupId>

   <artifactId>spring-cloud-starter-eureka</artifactId>

</dependency>

<dependency>

     <groupId>org.springframework.cloud</groupId>

     <artifactId>spring-cloud-starter-ribbon</artifactId>

</dependency>

2. 配置

server.port=8088

spring.application.name=mem-web

eureka.client.service-url.defaultZone=http://localhost:1111/eureka/,http://localhost:1112/eureka/

3.启动

@SpringBootApplication

@EnableEurekaClient

 public class MemWebBootApplication {

    @Bean

    @Qualifier("loadBalancedRestTemplate")

    @LoadBalanced //开启客户端负载均衡

    public RestTemplate loadBalancedRestTemplate() {

      return new RestTemplate();

    }

    public static void main(String[] args) {

        SpringApplication.run(MemWebBootApplication.class, args);

    }

}

4.通过服务名调用服务

String response= restTemplate.getForObject("http://mem-favorite/Favorite/rest/v1/xxxxx",String.class);

5.配置总结

1.服务注册中心


eureka.server.eviction-interval-timer-in-ms=1000 每隔多少毫秒去检测超时没有续约的服务,并剔除默

90秒。


eureka.server.enable-self-preservation= true运行期间统计心跳失败的比例在15分钟之内低于80%则将

当前的实例注册信息保护起来,让这些实例不会过期。默认是true


2.服务提供者


服务注册

eureka.client.register-with-eureka=true注册到服务中心默认true


服务续

eureka.instance.lease-renewal-interval-in-seconds=30每隔多少秒请求服务中心进行续约默认30

eureka.instance.lease-expiration-duration-in-seconds=90服务过期时间默认90


3.服务消费者

获取服务

eureka.client.fetch-registry=true默认true

eureka.client.registry-fetch-interval-seconds=30每隔多少秒请求服务中心的服务列表




原创粉丝点击