springCloud(3):微服务的注册与发现(Eureka)

一、简介

服务消费者需要一个强大的服务发现机制,服务消费者使用这种机制获取服务提供者的网络信息。即使服务提供者的信息发生变化,服务消费者也无须修改配置。

服务提供者、服务消费者、服务发现组件三者之间的关系大致如下:

1.各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息。

2.服务消费者可以从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口。

3.各个微服务与服务发现组件使用一定机制(如:心跳)通信,服务发现组件如长时间无法与某微服务实例通信,就会注销该实例。

4.微服务网络地址发生变更时,会重新注册到服务发现组件。

1.1、服务发现组件

服务发现组件应具备以下功能:服务注册表、服务注册与服务发现、服务检查

1.1.1、服务注册表

是服务发现组件的核心,用来记录各个微服务的信息,如服务名称、IP、端口等。服务注册表提供查询API(用于查询可用的微服务实例)和管理API(用户服务的注册与注销)

1.1.2、服务注册与服务发现

服务注册是指微服务在启动时,将自己的信息注册到服务发现组件上的过程。服务发现是指查询可用微服务列表及其网络地址的机制。

1.1.3、服务检查

服务发现组件使用一定机制定时检测已注册的服务,如发现某实例长时间无法访问,就会从服务注册表中移除实例

Spring Cloud提供了多种服务发现组件的支持,如:Eureka、Zookeeper等。

二、Eureka

Eureka是Netflix开源的服务发现组件,本身是基于REST的服务。它包含Server和Client两部分。Spring Cloud将其集成在子项目Spring Cloud Netflix中,从而实现微服务的注册与发现。

2.1、编写Eureka Server

2.1.1 新建springboot工程

新建一个springboot(1.5.4.RELEASE)工程,再添加如下依赖:

<dependencyManagement>
    <dependencies>
        <dependency>
	    <groupId>org.springframework.cloud</groupId>
	    <artifactId>spring-cloud-dependencies</artifactId>
	    <version>Dalston.SR1</version>
	    <type>pom</type>
	    <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
    </dependency>
</dependencies>

2.1.2、编写启动类

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {

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

2.1.3、配置文件application.properties

server.port=9090
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.service-url.defaultZone=http://localhost:9090/eureka/,http://localhost:9090/eureka1/

说明:

eureka.client.register-with-eureka:表示是否将自己注册到Eureka Server,默认为true.(由于此工程本身就是Eureka Server,所有这里写false)

eureka.client.fetch-registry:表示是否从Eureka Server获取信息,默认为true(由于此工程现在是单节点的,所有这里写false)

eureka.client.service-url.defaultZone:设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址,多个用逗号分隔

2.1.4、测试

访问:http://localhost:9090/

2.2、将微服务注册到Eureka Server上

2.2.1 新建springboot工程

新建一个springboot(1.5.4.RELEASE)工程,再添加如下依赖:

<dependencyManagement>
    <dependencies>
        <dependency>
	    <groupId>org.springframework.cloud</groupId>
	    <artifactId>spring-cloud-dependencies</artifactId>
	    <version>Dalston.SR1</version>
	    <type>pom</type>
	    <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
</dependencies>

2.2.2、编写启动类

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApplication {

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

2.2.3、配置文件application.properties

server.port=9091
spring.application.name=demo1
eureka.client.service-url.defaultZone=http://localhost:9090/eureka/
eureka.instance.prefer-ip-address=true

2.2.4、测试

访问:http://localhost:9090/

如果在Eureka Server的首页看到以下这段提示,则说明Eureka已经进入了保护模式:

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY‘RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

解决:显示指定ip

server.port=9091
spring.application.name=demo1
eureka.client.service-url.defaultZone=http://localhost:9090/eureka/
eureka.instance.prefer-ip-address=true
#显示指定IP
eureka.instance.instance-id: ${spring.cloud.client.ipAddress}:${server.port}

时间: 2024-10-28 11:14:48

springCloud(3):微服务的注册与发现(Eureka)的相关文章

SpringCloud微服务云架构构建B2B2C电子商务平台之-服务的注册与发现Eureka

创建服务注册中心在这里,我还是采用Eureka作为服务注册与发现的组件,至于Consul 之后会出文章详细介绍. 2.1 首先创建一个maven主工程. 首先创建一个主Maven工程,在其pom文件引入依赖,spring Boot版本为2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE.这个pom文件作为父pom文件,起到依赖版本控制的作用,其他module工程继承该pom.这一系列文章全部采用这种模式,其他文章的pom跟这个pom一样.再次说明一下,以后

业余草 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)

一.spring cloud简介 鉴于<史上最简单的Spring Cloud教程>很受读者欢迎,再次我特意升级了一下版本,目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE. Finchley版本的官方文档如下: http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html spring cloud 为开发

SpringCloud分布式微服务云架构 第一篇: 服务的注册与发现Eureka(Finchley版

一.spring cloud简介鉴于<史上最简单的Spring Cloud教程>很受读者欢迎再次我特意升级了一下版本目前支持的版本为Spring Boot版本2.0.3.RELEASE,Spring Cloud版本为Finchley.RELEASE. Finchley版本的官方文档如下http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html spring cloud 为开发人员提供了

SpringCloud (Finchley版本)教程(一): 服务的注册与发现Eureka

一.spring cloud简介 目前spring cloud的版本更新到了Finchley,支持的springbott2.0以上版本.具体版本可以参照下面的表格. Cloud代号 Boot版本(train) Boot版本(tested) lifecycle Angle 1.2.x incompatible with 1.3 EOL in July 2017 Brixton 1.3.x 1.4.x 2017-07卒 Camden 1.4.x 1.5.x - Dalston 1.5.x not e

第一篇:服务的注册与发现Eureka(Finchley版本)

一 springcloud简介 目前的springcloud的版本 Finchley.RELEASE springboot的版本 2.0.3.RELEASE Finchley版本的官方文档如下: http://cloud.spring.io/spring-cloud-static/Finchley.RELEASE/single/spring-cloud.html spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁

Spring Cloud学习(一) 服务的注册与发现(Eureka)

1 创建服务注册中心 在这里,我需要用的组件是Spring Cloud Netflix的Eureka ,eureka是一个服务注册和发现模块. 1.1    创建model工程作为服务注册中心Eureka-server 项目结构 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xml

白话SpringCloud | 第二章:服务注册与发现(Eureka)-上

前言 从本章节开始,正式进入SpringCloud的基础教程.从第一章<什么是SpringCloud>中我们可以知道,一个微服务框架覆盖的东西是很多的,而如何去管理这些服务或者说API接口,就显得异常重要了.所以本章节,主要介绍下SpringCloud中使用Eureka实现服务的注册与发现. 服务治理 Eureka实践 Eureka简单介绍 创建Eureka服务端 创建Eureka客户端 Eureka自我保护模式 参考资料 总结 最后 老生常谈 服务治理 服务治理是微服务架构中最为核心和基础的

Eureka 服务的注册与发现

(一)服务的注册于发现(eureka); Eureka Server: 服务注册中心,负责服务列表的注册.维护和查询等功能 在Idea里,新建项目,选择Spring initializer. 下面的pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://

史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

最新Finchley版本请访问:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f1-eureka/或者http://blog.csdn.net/forezp/article/details/81040925 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环境简单,可以在开发人员的电脑上跑.另外说明spring cl