二、Eureka服务注册与发现

  • Post author:
  • Post category:其他




1. 概念

SpringCloud封装了Netflix公司开发的Eureka模块来实现服务注册与发现(类似于Dubbo的注册中心,如Zookeeper)。

服务的注册与发现对于微服务架构来说非常重要,有了服务发现与注册功能,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。



2. 基本架构

Eureka采用了C-S的设计架构,包含两个组件,分别是

Eureka Server和Eureka Client




Eureka Server

:作为服务注册功能的服务器,它是服务注册中心。各节点启动后,会在Eureka Server中进行注册,这样Eureka Server的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可在界面中直观的看到。


Eureka Client

:是一个Java客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的、使用轮询负载算法(round-robin)的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内未接收到某个节点的心跳,Eureka Server将会从服务注册表中将这个服务移除(默认90秒)。

一般情况下,实现服务间的调用,需要搭建注册中心即Eureka Server,各个微服务作为Eureka Client,服务提供者连接Eureka Server注册服务并维持心跳连接,服务调用者从Eureka Server拉取服务注册表,完成目标服务的调用,示意图如下:

Eureka基本架构


Eureka Server

:提供服务注册与发现


Service Consumer

:服务消费方从Eureka获取注册服务列表,从而能够消费服务


Service Provider

:服务提供方将自身服务注册到Eureka,从而使服务消费方能够找到



3. 服务注册入门案例



3.1 搭建注册中心(Eureka Server)



3.1.1 新建工程spring-cloud-demo

1)首先创建一个Maven工程,名为spring-cloud-demo,如下图:

在这里插入图片描述

2)下一步确认工程信息,点击完成:

在这里插入图片描述



3.1.2 添加工程Maven依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.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>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Dalston.RC1</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>
<repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

这里注意SpringCloud的版本以地铁站名称命名,本案例中cloud版本选用的是Dalston.RC1,根据SpringCloud官网,与之匹配的boot版本选用的是1.5.2.RELEASE。

在这里插入图片描述



3.1.3 新建模块eureka-server-8888

点击工程名称spring-cloud-demo,右键新建一个maven module,名称为eureka-server-8888。该服务访问端口为8888,为了方便后面我们添加Eureka Server的服务集群,名称加上端口8888的后缀。



版权声明:本文为qq_35006663原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。