Spring Cloud笔记(13) 服务治理组件 Eureka

本篇进入 Spring Cloud,今天学习了治理服务的组件 Eureka 。总是在群里听人讨论 Spring Cloud 组件,老实说,真不知道有啥优越感,我觉得 zookeeper 也挺好用。而且所有的这些都只是工具而已,重点不是用法,毕竟用法已经被封装的很简单,几乎傻瓜式的。

考虑到公司接下来项目都采取 Spring Cloud ,不得不学习所有相关使用,刚好全家桶中也有大部分组件的基本使用。

本文内容版权几乎都属于 GitChat ,底部有版权说明,只是将我的过程简单记录在此。

Spring Cloud Eureka 的组成

Spring Cloud Eureka 主要包含了服务端和客户端组件:Eureka Server 服务端、Eureka Client 客户端。

Eureka Server,是提供服务注册与发现功能的服务端,也称作服务注册中心,Eureka 支持高可用的配置。

Eureka Client 是客户端组件,它的功能是将微服务在 Eureka Server 完成注册和后期维护功能,包括续租、注销等。需要注册的微服务就是通过 Eureka Client 连接到 Eureka Server 完成注册的,通过心跳机制实现注册中心与微服务的通信,完成对各个服务的状态监控。

搭建Eureka注册中心

接下来是代码:

1、创建一个 Maven 工程,这些都简单,注意修改 Maven地址和配置文件就是了。

2、添加依赖

<!-- 引入 Spring Boot 的依赖 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.7.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- 解决 JDK9 以上版本没有 JAXB API jar 的问题,JDK9 以下版本不需要配置 -->
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.3.0</version>
    </dependency>
    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>
</dependencies>

<!-- 引入 Spring Cloud 的依赖,管理 Spring Cloud 各组件 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

3、在此工程下创建一个 Module,当作 Eureka Server

4、添加该 Module 的依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

5、在 resources 路径下创建 application.yml 配置文件,添加如下配置

server:
  port: 8761 #当前 Eureka Server 服务端口
eureka:
  client:
    register-with-eureka: false #是否将当前 Eureka Server 服务作为客户端进行注册
    fetch-registry: false #是否获取其他 Eureka Server 服务的数据
    service-url:
      defaultZone: http://localhost:8761/eureka/ #注册中心的访问地址

6、在该 module 的 java 模块下创建包,比如我创建以下子路径包

com.guozh

然后创建启动类 RegistryCenter

package com.guozh;

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);
    }
}
  • @SpringBootApplication:声明该类是 Spring Boot 服务的入口。
  • @EnableEurekaServer:声明该类是一个 Eureka Server 微服务,提供发现服务的功能,即注册中心。

运行即可。打开 http://localhost:8761 可以看到注册中心的界面。No instances avaliable 表示当前没有发现微服务实例,即没有微服务完成注册。如果我们将 application.yml 中的 register-with-eureka 属性值改为 true,如下所示,则表示 Eureka Server 将自己作为客户端进行注册。

以上代码笔记内容来自付费专栏:案例上手 Spring 全家桶

PS:如果侵犯版权,请联系我。

本文由老郭种树原创,转载请注明:https://guozh.net/spring-cloud-eureka/

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注