springcloud微服务系列之服务注册与发现组件Eureka

一、Eurake的简介
二、使用Eureka进行服务的注册消费
1、创建一个服务注册中心
2、创建服务的提供者
3、创建服务的消费者

总结

一、Eurake的简介

今天我们来介绍下springcloud的核心组件Eureka,Eurake是负责微服务架构中服务治理的功能,负责各个服务实例的注册与发现。

Eureka包含了服务器端和客户端组件。服务器端,也被称作是服务注册中心,用于提供服务的注册与发现。 客户端组件包含服务消费者与服务生产者。在应用程序运行时,服务生产者向注册中心注册自己的服务实例,当消费者需要调用这个服务时,会先从注册中心去查找对应的生产者,然后就可以实现对该服务的消费了。

springcloud微服务系列教程(二)服务注册与发现组件Eureka
上图是一个较为简单的服务注册消费过程,也是Eureka组件的一个基本运转流程。下面我们来搭建一个Eureka实例。

二、使用Eureka进行服务的注册消费

1、创建一个服务注册中心

首先,打开intellij idea,创建一个springboot项目的主Maven工程,名称是eureka,勾选上需要用到的依赖,提醒一下,笔者这里选择的springboot版本是2.0.3,建议读者们也选择同样的版本。

springcloud微服务系列教程(二)服务注册与发现组件Eureka
点击下一步后,填写上项目名并点击完成即可。

springcloud微服务系列教程(二)服务注册与发现组件Eureka
这样,主工程就创建成功了,创建完主工程后,我们需要创建两个子工程,一个是服务注册中心eureka-server,另一个作为客户端,我们命名为eureka-client.

下面,我们先创建server的例子,右键主工程,选择New -> model -> spring initialir 创建一个新module,

springcloud微服务系列教程(二)服务注册与发现组件Eureka
点击下一步,填完信息后跳转到选择依赖的界面,选择Eureka Server依赖

springcloud微服务系列教程(二)服务注册与发现组件Eureka
创建后的pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;

<modelVersion>4.0.0</modelVersion>

<groupId>com.yeya</groupId>

<artifactId>demo</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

<name>eureka</name>

<description>Demo project for Spring Boot</description>

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.0.3.RELEASE</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

<spring-cloud.version>Finchley.RELEASE</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-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

<dependencyManagement>

<dependencies>

<dependency>

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

<artifactId>spring-cloud-dependencies</artifactId>

<version>${spring-cloud.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>

要想开启服务注册中心,我们需要在springboot项目中的main入口文件添加@EnableEurekaServer注解

springcloud微服务系列教程(二)服务注册与发现组件Eureka
默认情况下,Eureka server会自己向自己注册,我们需要在配置文件application.yml添加一些配置,代码如下:

#端口

server:

port: 8761

eureka:

instance:

hostname: localhost

client:

registerWithEureka: false

fetchRegistry: false

serviceUrl:

defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

设置服务的端口为1111,同时,通过设置eureka.client.register-with-eureka和eureka.client.fetch-registry都为false即可关闭服务向自己注册。

完成这一切后,我们右键main方法启动项目,然后再浏览器中访问地址

http://localhost:1111,结果如下图

springcloud微服务系列教程(二)服务注册与发现组件Eureka
这是eureka注册中心的界面图,我们可以看到很多信息,比如“System Status”可以看到我们的环境以及系统时间等信息,以及“General Info”里有很多关于注册中心的常规信息,包括了cpu,可用空间等,这些知识点比较多,而且不影响我们的项目效果,所以笔者今天不打算讨论太多,看改天有空再写一篇博文来为大家专门介绍,我们要关注的是“Instances currently registered with Eureka” 这一栏,栏中显示 No instances available ,很明显,因为我们没有注册服务,也就没有可用的服务,所以,我们要再创建客户端项目eureka-client.

2、创建服务的提供者

eureka-client的创建过程同server类似,在选择依赖时换成Eureka Discovery,创建后的pom文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;

<modelVersion>4.0.0</modelVersion>

<groupId>com.yeya</groupId>

<artifactId>eureka</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

<name>eureka</name>

<description>Demo project for Spring Boot</description>

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.0.3.RELEASE</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>

</properties>

<dependencies>

<dependency>

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

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

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

<dependencyManagement>

<dependencies>

<dependency>

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

<artifactId>spring-cloud-dependencies</artifactId>

<version>${spring-cloud.version}</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

</dependencyManagement>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>

同样,我们需要在main加上注解@EnableDiscoveryClient

springcloud微服务系列教程(二)服务注册与发现组件Eureka
然后,在eureka-client的配置文件中加入以下配置:

设置服务名

spring:

application:

name: eureka-client

设置注册中心地址

eureka:

client:

service-url:

defaultZone: http://localhost:1111/eureka

首先,指明自己的服务名为eureka-client,同时,指明注册中心的地址,这样,注册中心才能找到这个服务。

这里要说明一下,idea的配置文件是可以自动提示的,但是写注册中心地址时只能提示到service-url,之后的defaultZone是需要读者自己编写的,有人会怀疑是不是我写错了,其实不是,我们可以按ctrl点击defaultZone跳转到它的bean类查看源码。

springcloud微服务系列教程(二)服务注册与发现组件Eureka
可以看到,这里的默认标识的确是”defaultZone”,所以配置文件这么写是没有问题的,大家如果对配置的解析过程有兴趣的话,可以自己一步步跟着源码查看。

配置完之后,启动eureka-client项目,然后返回eureka-server的访问界面,可以看到我们的服务注册成功了!

springcloud微服务系列教程(二)服务注册与发现组件Eureka
这样,我们的服务注册就完成了,接下来我们来测试一下服务消费的过程。

3、创建服务的消费者

接下来,我们创建一个服务消费者的工程,命名为eureka-consumer,创建过程同eureka-client一样,创建成功后在main入口文件加入注解@EnableDiscoveryClient,然后修改一下配置文件application.yml:

设置服务名

spring:

application:

name: eureka-consumer

设置注册中心地址

eureka:

client:

service-url:

defaultZone: http://localhost:1111/eureka

server:

port: 1113

为了能测试服务消费的效果,我们先在eureka-client中的主类中创建一个接口dc,

@EnableDiscoveryClient

@SpringBootApplication

@RestController

public class EurekaApplication {

public static void main(String[] args) {

SpringApplication.run(EurekaApplication.class, args);

}

@GetMapping("/hello")

public String dc() {

return "hello";

}

}

在eureka-consumer的应用主类中,初始化 RestTemplate ,用来真正发起REST请求。

springcloud微服务系列教程(二)服务注册与发现组件Eureka
在这里,我们稍微介绍一下RestTemplate ,RestTemplate是用来访问restful API的网络框架,其主要方法与rest的http协议相关,例如GET 、POST 、PUT 、DELETE,这些方法对应这个类中的getForObject()、getForEntity()、postForObject()、put()和delete()等,本文里我们用getForObject()来请求API并返回对应的信息。

新建一个controller文件,添加一个接口(”/consumer”),用来消费eureka-client提供的接口 :

@RestController

public class ConsumeController {

@Autowired

private LoadBalancerClient client;

@Autowired

RestTemplate restTemplate;

@GetMapping("/consumer")

public String consumer() {

ServiceInstance serviceInstance = client.choose("eureka-client");

String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/hello";

String dc = restTemplate.getForObject(url,String.class);

return dc;

}

}

先通过 @Autowired 注入 LoadBalancerClient 一个实例client,client.choose()的参数是需要调用到的服务的名称,传入之后即可创建一个服务实例,通过实例的方法调用就可以访问到eureka-client的”hello”接口并返回字符串信息。分别启动eureka-server、eureke-client、eureka-consumer三个工程,在浏览器访问http://localhost:1111/,从下图中可以看到两个服务都已经注册成功

springcloud微服务系列教程(二)服务注册与发现组件Eureka
接着,打开新页面访问http://localhost:1113/consumer,可以看到浏览器成功输出”hello”字符串。

springcloud微服务系列教程(二)服务注册与发现组件Eureka
这表明,我们成功通过eureka-consumer提供的接口来消费了eureka-client这个微服务了。

总结

本文给大家简单介绍了服务注册发现组件eureka的实例,同时也实现了服务之间的调用,虽然例子简单,但也算开了个好头,接下来的系列教程会继续为大家讲解其他组件的用法,欢迎读者们能跟我一起学习,如若文章有错误或不足之处,读者们可以在评论区指出,我会积极给于回复!

原文地址:http://blog.51cto.com/13792737/2159217

时间: 2024-10-15 08:22:55

springcloud微服务系列之服务注册与发现组件Eureka的相关文章

史上最简单的 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

玩转Windows服务系列&mdash;&mdash;Windows服务启动超时时间

最近有客户反映,机房出现断电情况,服务器的系统重新启动后,数据库服务自启动失败.第一次遇到这种情况,为了查看是不是断电情况导致数据库文件损坏,从客户的服务器拿到数据库的日志,进行分析. 数据库工作机制 要分析数据库启动失败的原因,首先说明一下数据库服务的工作机制. 数据库分为六大服务: 数据库的六大服务之间存在依赖关系,及启动流程: 服务自动启动失败原因 从客户那里,拿到了两份日志,一份是开机自启动的日志信息,此次数据库启动失败.另外一份是开机后,手动启动数据库服务的日志信息,此次数据库启动成功

分布式中几种服务注册与发现组件的原理与比较

Eureka.Consul.Zookeeper的基本原理与比较. 前言 在云计算和容器化技术发展火热的当下,对于微服务架构,服务注册与发现组件是必不可少的.在传统的服务架构中,服务的规模处于运维人员的可控范围内.当部署服务的多个节点时,一般使用静态配置的方式实现服务信息的设定.在微服务应用中,服务实例的数量和网络地址都是动态变化的,这对系统运维提出了巨大的挑战.因此,动态的服务注册与发现就显得尤为重要. 解决的问题 在一个分布式系统中,服务注册与发现组件主要解决两个问题:服务注册和服务发现. 服

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

一.简介 服务消费者需要一个强大的服务发现机制,服务消费者使用这种机制获取服务提供者的网络信息.即使服务提供者的信息发生变化,服务消费者也无须修改配置. 服务提供者.服务消费者.服务发现组件三者之间的关系大致如下: 1.各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息. 2.服务消费者可以从服务发现组件查询服务提供者的网络地址,并使用该地址调用服务提供者的接口. 3.各个微服务与服务发现组件使用一定机制(如:心跳)通信,服务发现组件如长时间无法与某微服务

构建微服务架构Spring Cloud:服务注册与发现(Eureka、Consul)

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config.Spring Cloud Netflix.Spring Cloud0 CloudFoundry.

SpringCloud服务注册与发现中心-Eureka

1.服务注册与发现的好处: 假设没有这个东西,那么如果存在a,b,c三个同样的服务: 而现在有一个u服务需要用到a或b或c提供的接口,那么u里面肯定是需要配置这三个服务的地址,然后调用的时候还有问题就是我该选哪个服务来调用呢? 因为他们作用都是等价的:这里就产生了一系列的配置管理问题(包括a,b,c服务地址变了,或者增加了d服务,这些都需要在u里面改配置,还有改负载均衡算法): 现在有了服务注册与发现中心,那么a,b,c它们启动时都会自动将自己的服务标识(a,b,c的服务标识是一样的,因为它们的

SpringCloud微框架系列整体模块梳理

Spring 顶级项目,包含众多,我们重点学习一下,SpringCloud项目以及SpringBoot项目 ————————————————————main———————————————————— 一.SpringCloud项目简介 Spring Cloud: 微服务工具包,为开发者提供了在分布式系统的配置管理.服务发现.断路器.智能路由.微代理.控制总线等开发工具包. Spring Boot: 旨在简化创建产品级的 Spring 应用和服务,简化了配置文件,使用嵌入式web服务器,含有诸多开箱

Spring Cloud 一:服务注册与发现(Eureka)【Dalston版】

Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式. 微服务架构 那么什么是"微服务架构"呢?简单的说,微服务架构就是将一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署.独立维护.独立扩展,服务与服务间通过诸如RESTful API的方式互相调

SpringCloud 第一篇: 服务的注册与发现(Eureka)

前言: 必需学会SpringBoot基础知识 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环境简单,可以在开发人员的电脑上跑. 工具: JDK8 apache-maven-3.5.2 IntelliJ IDEA 2017.3 x64 一.服务注册中心 1. 0 启动一个服务注册中心,只需要一个注解@EnableEurekaServer package com.lwc