当前位置: 首页 > news >正文

《微服务实战》 第四章 Spring Cloud Netflix 之 Eureka

前言

Eureka 是 Netflix 公司开发的一款开源的服务注册与发现组件。
Spring Cloud 使用 Spring Boot 思想为 Eureka 增加了自动化配置,开发人员只需要引入相关依赖和注解,就能将 Spring Boot 构建的微服务轻松地与 Eureka 进行整合。

1、Eureka 两大组件

Eureka 采用 CS(Client/Server,客户端/服务器) 架构,它包括以下两大组件:Eureka Server、Eureka Client

组件介绍
Eureka ServerEureka 服务注册中心,主要用于提供服务注册功能
Eureka ClientEureka 客户端,通常指的是微服务系统中各个微服务

2、Eureka 服务注册与发现

在这里插入图片描述

功能介绍
服务注册中心(Register Service)它是一个 Eureka Server,用于提供服务注册和发现功能。
服务提供者(Provider Service)它是一个 Eureka Client,用于提供服务。它将自己提供的服务注册到服务注册中心,以供服务消费者发现。
服务消费者(Consumer Service)它是一个 Eureka Client,用于消费服务。它可以从服务注册中心获取服务列表,调用所需的服务。

3、案例

3.1、创建主工程

名称:SpringCloud
在这里插入图片描述

3.1.1、主工程pom.xml配置

在这里插入图片描述

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><packaging>pom</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.hqyj</groupId><artifactId>drp</artifactId><version>0.0.1-SNAPSHOT</version><name>drp-parent</name><description>Demo project for Spring Boot</description><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><junit.version>4.12</junit.version><log4j.version>1.2.17</log4j.version><lombok.version>1.16.18</lombok.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.5</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.5.1</version><configuration><source>${maven.compiler.source}</source><target>${maven.compiler.target}</target></configuration></plugin></plugins></build></project>

3.2、创建子公共模块common-api

3.2.1、添加module

在这里插入图片描述
在这里插入图片描述

3.2.2、pom.xml配置

<?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"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hqyj</groupId><artifactId>SpringCloud</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>common-api</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies></project>

3.2.3、maven非springboot项目,增加main入口

添加Main.java,指定main入口,防止Maven package / install打包失败

public class Main {public static void main(String[] args) {System.out.println("common-api");}}

3.3、创建Eureka注册中心模块eureka-server

在这里插入图片描述

3.3.1、配置pom.xml

<?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"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hqyj</groupId><artifactId>SpringCloud</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>eureka-server</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><skip-tests>true</skip-tests></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>com.github.enesusta</groupId><artifactId>spring-devtools</artifactId><version>1.0.1</version><optional>true</optional></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency></dependencies></project>

3.3.2、配置application.yml

在resource目录下,新建application.yml文件
在这里插入图片描述

编辑application.yml文件,添加eureka配置

server:port: 7001eureka:instance:hostname: localhost #eureka服务端的实例名称,client:register-with-eureka: false #false表示不向注册中心注册自己。fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务service-url:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机版服务注册中心

3.3.3、启动eureka-server

创建EurekaServerApplication.java启动文件


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);}
}

3.3.3.1、编译eureka-server

在这里插入图片描述
在这里插入图片描述

3.3.3.2、运行EurekaServerApplication.java文件

在这里插入图片描述
启动:http://localhost:7001/

3.4、创建用户服务模块user-service在这里插入图片描述

3.4.1、配置pom.xml

<?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"><modelVersion>4.0.0</modelVersion><parent><groupId>com.hqyj</groupId><artifactId>SpringCloud</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>user-service</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--devtools 开发工具--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!--Spring Boot 测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--junit 测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><!-- 修改后立即生效,热部署 --><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId><version>1.2.8.RELEASE</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>com.hqyj</groupId><artifactId>common-api</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies></project>

3.4.2、配置application.yml

server:port: 8001
spring:application:name: user-service  #微服务名称
eureka:client: #将客户端注册到 eureka 服务列表内service-url:defaultZone: http://localhost:7001/eureka  #这个地址是 7001注册中心在 application.yml 中暴露出来额注册地址 (单机版)

3.4.3、启动user-service

创建UserApplication.java启动文件

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class UserApplication {public static void main(String[] args) {SpringApplication.run(UserApplication.class,args);}
}

3.4.3.1、编译user-service

在这里插入图片描述
在这里插入图片描述

3.4.3.2、运行UserApplication.java文件

在这里插入图片描述

3.4.3.3、测试

http://localhost:8001/user/userInfoList

3.5、查看编译后的包

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/67221.html

相关文章:

  • 11. 深入理解并发编程-AQS与JMM
  • 深度解耦:使用Jetpack新技术Hilt实现依赖注入
  • C++ 构造函数-2
  • 网安笔记 08 key management
  • Linux socket
  • 14.构造器的排序分组.子查询
  • 【剑指 Offer】05,替换字符创中的空格;难度等级:简单。易错点:C++中 char 和 string 类型的转换
  • 图像分割入门教程
  • C++入门教程||C++ 信号处理||C++ 多线程
  • java计算矩形的面积和周长的方法
  • 一分钟掌握如何更换Jupyter Notebook的主题和字体
  • 如何系统全面的自学自动化测试?明确后我直接拿到了20K
  • 【搭建私有云盘】无公网IP,在外远程访问本地微力同步
  • Pytest自动化测试框架一些常见的插件
  • 【力扣】刷题+剑指offer第二版
  • QueryStorm Crack
  • 网络安全与隐私保护:挑战与应对策略
  • 不同应用场景瑞芯微RK3568主板方案定制
  • 公司数字化转型,如何选择高效的知识管理工具?
  • 银行从业法律法规(初级)-多选
  • Maven 依赖管理 学习
  • 分享105个NET源码ASP源码,总有一款适合您
  • Web缓存利用分析(三)
  • Git合并冲突的根本原因和解决方法
  • 从C语言到C++⑨(第三章_CC++内存管理)详解new和delete+面试题笔试题
  • 阿里云服务器安装宝塔Linux面板教程图解
  • ORA-01555 ORA-22924 快照过旧问题处理
  • Win11系统更新后网络速度变的很慢怎么办?
  • 了解 XML结构(一)
  • Vue简单语法记录