本篇进入 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/