Spring Cloud常用组件——服务发现 Eureka

服务发现 Eureka

  • 简介
    • 服务发现?
  • 实战
    • Eureka客户端
    • Eureka服务端
      • Eureka最小化服务端示例:
      • SpringBoot2.0以上配置密码登录

简介

其实Spring Cloud Netflix提供了许多优秀的功能,包括服务发现(Eureka),断路器(Hystrix),智能路由(Zuul)和客户端负载平衡(Ribbon)。但是今天我们这里主要介绍服务发现(Eureka)。

服务发现?

由于应用的分解,微服务的引入,服务提供者越来越多,业务系统与服务系统之间的调用,都需要有效管理。在微服务分布式体系下服务发现必将以核心组件而存在的。

服务发现有三个角色:服务提供者、服务消费者和服务注册中心。

  • 服务提供者:不解释。
  • 服务消费者:不解释。
  • 服务注册中心:联系服务提供者和服务消费者的桥梁。服务提供者将自己提供的服务地址注册到服务注册中心,服务消费者从服务中介那里查找自己想要的服务的地址,然后享受这个服务。服务注册中心提个多个服务,每个服务对应多个服务提供者。
    Spring Cloud常用组件——服务发现 Eureka_第1张图片

实战

Eureka客户端

Eureka实例都可以登记为客户端,其他客户端也可以通过spring管理bean发现已注册的实例。

客户端向Eureka注册时,它会提供有关其自身的元数据,例如主机,端口,运行状况指示器URL,主页和其他详细信息。Eureka从属于服务的每个实例接收心跳消息。如果心跳在可配置的时间表上进行故障转移,则通常会将实例从注册表中删除。

示例一个最小的Eureka客户应用程序:

@SpringBootApplication
@RestController
@EnableEurekaClient
public class Application {

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

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

}

pom.xml配置:

<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
dependency>

application.yml配置:

eureka:
  client:
    serviceUrl:
      defaultZone: http://xxxxx/eureka

Eureka服务端

这里的Eureka服务端功能相当于前面所说的服务注册中心,可以高可用分部署部署。

Eureka最小化服务端示例:

@SpringBootApplication
@EnableEurekaServer
public class Application {

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

}

pom.xml配置:

<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
dependency>

application.yml配置:

server:
  port: 8761

eureka:
  instance:
    prefer-ip-address: true
  client:
    fetch-registry: false
    register-with-eureka: false
    serviceUrl:
      defaultZone: http://xxxx:8761/eureka/
  server:  #配置属性,但由于 Eureka 自我保护模式以及心跳周期长的原因,经常会遇到 Eureka Server 不剔除已关停的节点的问题
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 5000

SpringBoot2.0以上配置密码登录


<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-securityartifactId>
dependency>

其他组件介绍:
Spring Cloud常用组件——服务发现 Eureka
Spring Cloud常用组件——配置中心 Config
Spring Cloud常用组件——网关 Gateway
Spring Cloud常用组件——安全 Security

参考:
https://spring.io/projects/spring-cloud
https://spring.io/projects/spring-cloud-netflix
https://docs.spring.io/spring-cloud-netflix/docs/2.2.5.RELEASE/reference/html/

你可能感兴趣的:(java,springcloud,eureka,java,spring)