`

spring cloud:eureka服务发现

 
阅读更多
1.eureka服务端

服务端代码
@SpringBootApplication
@EnableEurekaServer
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }

}


1.1高可用和域
eureka服务器没有后端存储,但注册的服务实例都有发送心跳保持他们的登记日期(这可以在内存中完成),客户也有一个内存中的缓存(所以他们不需要为每一个服务的情况去注册一次)。默认情况下eureka服务器也是一个eureka客户端,还需要一个url来定位节点

1.2单服务模式
application.yml配置如下:
server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/


1.3对等意识
两个对等的eureka服务配置,application.yml配置如下:
---
spring:
  profiles: peer1
eureka:
  instance:
    hostname: peer1
  client:
    serviceUrl:
      defaultZone: http://peer2/eureka/

---
spring:
  profiles: peer2
eureka:
  instance:
    hostname: peer2
  client:
    serviceUrl:
      defaultZone: http://peer1/eureka/


我们使用上面例子yaml文件的配置运行在两个相同的服务器上,使用不同的spring profile。你可以使用这个配置在单个服务器测试对等性 。

1.4 使用IP
实例名称显示IP配置如下:
引用
eureka.instance.preferIpAddress=true


2.erueka客户端
eureka是netflix的服务发现服务器和客户端。eureka是提供服务注册,为每个注册服务提供知晓其他服务状态的服务。
2.1 eureka客户端代码和配置
当一个客户端注册到eureka,它会提供关于它自己的端口、地址、健康监控url和home页面等等的元数据,erueka会从每个实例接受心跳信息。如果心跳在配置的时间内失败,实例通常会从注册表中移除。
下面是eureka客户端代码:
@SpringBootApplication
@EnableEurekaClient
@RestController
public class Application {

    @RequestMapping("/")
    public String home() {
        return "Hello world";
    }

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }
}


在这里使用的是@EnableEurekaClient,这个标注只能用于eureka服务,还可以使用@EnableDiscoveryClient。
此外还需要配置eureka服务器的位置,在application.yml文件配置,配置如下:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/


2.2 状态页面和健康监控
eureka实例的状态页面和健康监控默认为/info和/health,这是spring boot actuator提供的默认终端点。当应用不使用默认的上下文(context path或servlet path,比如配置server.servletPath=/test),或者管理zhongduan路径(比如配置management.contextPath=/admin)。
application.yml配置文件如下:
eureka:
  instance:
    statusPageUrlPath: ${management.contextPath}/info
    healthCheckUrlPath: ${management.contextPath}/health


2.3eureka的元数据
可以通过eureka.instance.metadataMap修改元数据,这些元数据不会改变客户端的行为。

默认情况下一个eureka服务使用主机名称注册,那么只能一个主机一个服务。通过eureka.instance.metadataMap.instanceId你可以修改这个实例ID。application.yml配置如下:
eureka:
  instance:
    metadataMap:
      instanceId: ${spring.application.name}:${random.value}

使用这个配置,多个服务实例可以配置在一个主机上,random.value确保了实例ID的唯一性。当然需要实例的端口不一样

2.4 使用DiscoveryClient类
如果你的应用使用@EnableEurekaClient注解,那么只能使用eureka来发现服务实例。
一个方法是使用com.netflix.discovery.DiscoveryClient
@Autowired
private DiscoveryClient discoveryClient;

public String serviceUrl() {
    InstanceInfo instance = discoveryClient.getNextServerFromEureka("STORES", false);
    return instance.getHomePageUrl();
}

请不要在@PostConstruct或者@Scheduled方法中使用DiscoveryClient,因为ApplicationContext也许没有启动。

2.5 DiscoveryClient类的替代品
你不必使用原始Netflix DiscoveryClient,通常更方便是使用一个包装器。spring cloud提供了Feign(一个rest客户端构建器),spring RestTemplate使用一个eureka服务标示代替物理的URL。用一个组固定的物理服务器配置Ribbon,使用.ribbon.listOfServers配置,用逗号分隔服务器的物理地址或主机名,其中是客户端的ID。
你也可以使用org.springframework.cloud.client.discovery.DiscoveryClient,不特定于netflix,代码如下:
@Autowired
private DiscoveryClient discoveryClient;

public String serviceUrl() {
    List<ServiceInstance> list = client.getInstances("STORES");
    if (list != null && list.size() > 0 ) {
        return list.get(0).getUri();
    }
    return null;
}


2.6注册服务心跳
注册服务默认心跳时间为30秒,当一个服务器不可用,需要3个心跳才能让服务器和客户端的元数据相同。可以使用eureka.instance.leaseRenewalIntervalInSeconds加快这个过程。在生产环境最好使用默认配置

http://blog.csdn.net/zhuchuangang/article/details/51202307
分享到:
评论

相关推荐

    springcloud:Eureka服务注册发现demo源码案例演示

    一、Eureka基本架构 1、组件架构图 2、核心概念 二、Eureka案例代码 1、项目基本结构 2、配置本机的Host文件 3、注册中心代码分解 4、服务提供方代码分解 5、服务消费方代码

    微服务springcloud:eureka整合gateway、RestTemplate和FeignClient

    在Spring Cloud中,可以通过配置Eureka Client,让RestTemplate自动发现服务实例,进行服务调用。这种方式适用于简单、非侵入性的服务调用,但缺乏服务调用的封装和抽象。 2. FeignClient:Feign是一个声明式的Web...

    springcloud整合Eureka的demo

    本教程将详细介绍如何整合SpringCloud与Eureka,创建一个基本的服务发现示例。 首先,我们需要理解Eureka的工作原理。Eureka是一个基于REST的服务,它作为服务注册中心,使得各个微服务能够相互发现。每个微服务在...

    Spring Cloud Eureka Server

    Spring Cloud Eureka Server是Spring Cloud框架中的一个关键组件,它主要负责服务的注册与发现,是微服务架构中实现服务治理的重要工具。Eureka Server作为服务注册中心,为其他微服务提供服务注册和发现的能力,...

    springcloud-eureka-server.zip

    在分布式微服务架构中,服务治理扮演着至关重要的角色,而SpringCloud Eureka Server正是这样一款专为解决服务注册与发现问题而设计的组件。本文将围绕"springcloud-eureka-server.zip"这个项目,深入探讨Spring...

    springcloud-eureka.zip

    Spring Cloud Eureka是Spring Cloud框架中的一个组件,主要用于实现服务发现功能。Eureka是一个基于REST的服务,用于定位服务,使得分布式系统中的应用能发现彼此并进行通信。在微服务架构中,Eureka作为服务注册与...

    springCloud+eureka

    综上所述,"springCloud+eureka" 主要是利用 Spring Cloud 的 Eureka 模块构建微服务架构,实现服务的注册与发现,从而简化了分布式系统中的服务治理。通过启动 Eureka Server 和两个客户端,可以演示服务间的通信和...

    spring cloud eureka(免费下载)

    Spring Cloud Eureka是Spring Cloud框架中的一个核心组件,主要用于实现微服务之间的服务发现和服务治理。在微服务架构中,每个服务可能都会独立部署和扩展,Eureka作为一个服务注册中心,帮助各个服务实例进行注册...

    SpringCloud+eureka+gateway.zip

    Eureka是SpringCloud中的服务注册与发现组件,它允许服务提供者注册自己的服务,并让服务消费者能够发现并调用这些服务。Eureka服务器作为服务注册中心,负责存储、检索服务实例的信息。服务提供者启动时向Eureka...

    spring cloud eureka 注册中心客户端

    Spring Cloud Eureka是Netflix开发的服务发现组件,它在微服务架构中扮演着核心角色,用于管理服务实例的注册与发现。Eureka客户端是Eureka生态系统的一部分,它允许微服务应用注册到Eureka服务器并获取其他服务的...

    spring-cloud-eureka 服务注册及发现实例

    在分布式系统中,服务治理是不可或缺的一部分,Spring Cloud Eureka 是 Netflix 提供的服务发现组件,它可以帮助微服务架构中的各个服务实例互相找到对方并进行通信。在这个实例中,我们将探讨如何利用 Spring Cloud...

    springcloud eureka服务注册中心 最新版本2.x.x

    SpringCloud Eureka是微服务架构中的关键组件,它作为一个服务注册与发现的工具,使得服务之间的调用变得简单。在最新版本2.x.x中,Eureka提供了更稳定、高效的特性来支持大规模分布式系统的构建。 首先,让我们...

    01Spring Cloud Eureka:服务注册与发现1

    "Spring Cloud Eureka:服务注册与发现" Spring Cloud Eureka是Spring Cloud Netflix子项目的核心组件之一,主要用于微服务架构中的服务治理。Eureka是服务注册与发现机制的实现,它允许微服务在注册中心注册自己...

    SpringCloud-Eureka

    Eureka 是 Netflix 在线影片公司开源的一个服务注册与发现的组件,是 Spring Cloud 社区整合为 Spring Cloud Netflix 模块。Eureka 来源于古希腊词汇,意为“发现了”。 知识点二:Eureka 和 Zookeeper 的区别 ...

    spring cloud之Eureka Server搭建

    总之,Eureka Server是Spring Cloud微服务架构中的重要组件,它的功能和服务发现机制对于构建分布式系统至关重要。通过以上步骤,你已经掌握了如何快速搭建一个基础的Eureka Server,为进一步学习和实践Spring Cloud...

    Spring Cloud 之 Eureka集群整合Zuul、Feign-源码

    **Eureka**是Spring Cloud中的服务发现组件,它允许微服务之间互相发现并进行通信。Eureka Server作为注册中心,负责服务的注册与发现。服务提供者在启动时会向Eureka Server注册自己的信息,而服务消费者则可以通过...

    分布式集群springBoot+springCloud+Eureka+Feign.zip

    本项目以"分布式集群springBoot+springCloud+Eureka+Feign.zip"为主题,旨在创建一个基于Spring Boot、Spring Cloud、Eureka和Feign的基础框架。下面将详细介绍这些技术以及如何将它们整合到一起。 首先,Spring ...

    如何使用Spring Cloud Eureka实现服务发现,0基础!!易懂!!.html

    本文将详细介绍如何使用 Spring Cloud Eureka 实现服务发现。我们将涵盖以下内容: 什么是服务发现? Spring Cloud Eureka 简介 搭建 Eureka 服务注册中心 注册微服务到 Eureka 服务发现和调用 高可用 Eureka 集群...

    Spring Cloud eureka服务注册DEMO

    在本文中,我们将深入探讨Spring Cloud Eureka,一个在分布式系统中用于服务发现的重要组件。我们将基于提供的"Spring Cloud Eureka服务注册DEMO"来理解其核心概念,并探索如何通过三个Spring Boot应用——服务注册...

    spring cloud2.0 eureka server spring security配置

    Spring Cloud Eureka是Netflix Eureka的Spring Boot实现,它为微服务架构提供了服务注册和服务发现功能。而Spring Security则是一个强大的安全框架,用于保护Web应用和API。 在Spring Cloud 2.0中,Eureka Server的...

Global site tag (gtag.js) - Google Analytics