当前位置: 首页 > 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、查看编译后的包

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

相关文章:

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

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

11. 深入理解并发编程-AQS与JMM

AQS (AbstractQueuedSynchronizer) 他的实现类诸如: CountDownLatch、ThreadLocalPool和ReentrantLock 在这些类中,AQS都是以内部类的形式存在的 AQS使用了模板方法设计模式 例子: 做蛋糕分为3个步骤,定一个抽象类,重写3个方法,做模型、烘焙和涂抹原料,然后在另外1个方法做蛋糕…...

深度解耦:使用Jetpack新技术Hilt实现依赖注入

注入解耦是一种软件设计模式&#xff0c;旨在将应用程序的不同组件解耦。通过采用依赖注入、控制反转、面向接口编程等技术&#xff0c;注入解耦模式可以帮助开发人员将应用程序分解为可重用和可扩展的组件。这样做可以减少代码的耦合度&#xff0c;提高模块化和可测试性&#…...

C++ 构造函数-2

构造函数-2 构造函数体赋值 在对象创建的时候&#xff0c;编译器会调用构造函数&#xff0c;给对象当中的成员赋一个合适的初始值。 class Date { public: Date(int year, int month, int day) { _year year; _month month; _day day; } private: int _year; int _month; i…...

网安笔记 08 key management

Key Management —— 不考 网络加密方法 1.1 链路加密 特点&#xff1a; 两个相邻点之间数据进行加密保护 不同节点对密码机和Key不一定同中间节点上&#xff0c;先解密后加密报文报头可一起加密节点内部&#xff0c;消息以明文存在密钥分配困难保密及需求数量大 缺点&…...

Linux socket

百度百科对于Socket的介绍 套接字&#xff08;socket&#xff09;是一个抽象层&#xff0c;应用程序可以通过它发送或接收数据&#xff0c;可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中&#xff0c;并与网络中的其他应用程序进行通信…...

14.构造器的排序分组.子查询

学习要点&#xff1a; 1.排序分组 2.子查询 本节课我们来开始学习数据库的构造器查询中的子查询、排序、分组等。 一&#xff0e;排序分组 1. 使用 whereColumn()方法实现两个字段相等的查询结果&#xff1b; //判断两个相等的字段&#xff0c;同样支持 orWhereColumn() //支持…...

【剑指 Offer】05,替换字符创中的空格;难度等级:简单。易错点:C++中 char 和 string 类型的转换

【剑指 Offer】05&#xff0c;替换字符创中的空格&#xff1b;难度等级&#xff1a;简单。 文章目录 一、题目二、题目背景三、我的解答四、易错点五、知识点&#xff1a;char 和 string 类型的转换 一、题目 二、题目背景 在网络编程中&#xff0c;如果 URL 参数中含有特殊字…...

图像分割入门教程

文章目录 图像分割入门教程1. 图像分割基本概念2. 基于阈值的图像分割3. 基于区域的图像分割4. 基于边缘的图像分割5. 基于区域和边缘的图像分割区别6. 基于深度学习的图像分割7. 实现步骤结论 图像分割入门教程 图像分割是计算机视觉领域的一个重要任务&#xff0c;其目标是将…...

C++入门教程||C++ 信号处理||C++ 多线程

C 信号处理 C 信号处理 信号是由操作系统传给进程的中断&#xff0c;会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上&#xff0c;可以通过按 CtrlC 产生中断。 有些信号不能被程序捕获&#xff0c;但是下表所列信号可以在程序中捕获&#xff0c;并可以基于…...

java计算矩形的面积和周长的方法

在生活中&#xff0c;我们常常需要计算某个矩形的面积和周长&#xff0c;如我们经常用的计算器就是个不错的选择&#xff0c;它可以计算出任意一个矩形的面积和周长。那么&#xff0c;如果你想使用 Java编程语言来计算矩形的面积和周长&#xff0c;你该如何做呢&#xff1f;今天…...

一分钟掌握如何更换Jupyter Notebook的主题和字体

Jupyter Notebook 更换主题&#xff08;背景、字体&#xff09; 在现代科技发展的浪潮中&#xff0c;Jupyter Notebook 作为一种强大的交互式笔记工具&#xff0c;已经被越来越多的用户所使用。它以其简单易用、功能强大、资源丰富等特点&#xff0c;成为了许多人学习、工作、科…...

如何系统全面的自学自动化测试?明确后我直接拿到了20K

玩自动化测试多年的老司机带你上车全面系统学习自动化测试&#xff0c;并且还能教你如何学习才能在今年拿到一份不错的offer。 说到系统全面&#xff0c;就是以目前绝大部分公司招聘要求的知识内容为基准&#xff0c;毕竟我们学习自动化测试都是为了高薪工作&#xff0c;《史记…...

【搭建私有云盘】无公网IP,在外远程访问本地微力同步

文章目录 1.前言2. 微力同步网站搭建2.1 微力同步下载和安装2.2 微力同步网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 私有云盘作为云存储概念的延伸&#xff0c;虽然谈不上多么新颖&#xff0c;但是其…...

Pytest自动化测试框架一些常见的插件

Pytest拥有丰富的插件架构&#xff0c;超过800个以上的外部插件和活跃的社区&#xff0c;在PyPI项目中以“ pytest- *”为标识。 本篇将列举github标星超过两百的一些插件进行实战演示。 插件库地址&#xff1a;http://plugincompat.herokuapp.com/ 1、pytest-html&#xff…...

【力扣】刷题+剑指offer第二版

文章目录 题目收藏不含重复字符的最长子串最长公共子串 剑指 Offer剑指 Offer 05. 替换空格剑指 Offer 03. 数组中重复的数字剑指 Offer 04. 二维数组中的查找剑指 Offer 09. 用两个栈实现队列剑指 Offer 07. 重建二叉树剑指 Offer 06. 从尾到头打印链表剑指 Offer 11. 旋转数组…...

QueryStorm Crack

QueryStorm Crack 应用程序现在可以指定“minRuntimeVersion”。 添加了用于节流和API密钥管理的HTTP请求基础结构(请求/尝试/重试循环)。 改进了许可提示的处理(避免在多个单元格中评估许可功能时出现多个提示)。 已添加“IDialogServiceExt”接口&#xff0c;该接口允许应用程…...

网络安全与隐私保护:挑战与应对策略

一、引言 在互联网时代&#xff0c;个人隐私保护已经成为一项全球性的难题。尤其是在“裸奔”时代下&#xff0c;人们越来越难以避免个人隐私泄露的风险。网络安全与隐私保护已经成为了人们关注的焦点。保护网络隐私已经成为了每个人最基本的权利和义务。 二、网络安全与隐私…...

不同应用场景瑞芯微RK3568主板方案定制

随着物联网和智能设备的迅猛发展&#xff0c;瑞芯微RK3568主板方案作为一种高性能的系统System-on-a-chip&#xff08;SoC&#xff09;&#xff0c;已经成为嵌入式系统、智能家居设备和工业自动化设备等应用场景的首选方案。定制瑞芯微RK3568主板方案可以满足不同应用场景的需求…...

公司数字化转型,如何选择高效的知识管理工具?

随着企业数字化转型的加速&#xff0c;知识管理工具的重要性也日益凸显。好的知识管理工具可以帮助企业提高工作效率、降低成本、提高创新能力和竞争力。但是&#xff0c;市场上的知识管理工具繁多&#xff0c;如何选择高效的知识管理工具成为了企业面临的一大难题。本文将从以…...

Qwen3-Coder-30B-A3B-Instruct-FP8:终极代码模型对比分析指南

Qwen3-Coder-30B-A3B-Instruct-FP8&#xff1a;终极代码模型对比分析指南 【免费下载链接】Qwen3-Coder-30B-A3B-Instruct-FP8 项目地址: https://ai.gitcode.com/hf_mirrors/Qwen/Qwen3-Coder-30B-A3B-Instruct-FP8 在当今AI代码生成领域&#xff0c;Qwen3-Coder-30B-…...

高性能Windows流媒体服务器部署:5大核心技术与3种实战架构深度解析

高性能Windows流媒体服务器部署&#xff1a;5大核心技术与3种实战架构深度解析 【免费下载链接】srs-windows 项目地址: https://gitcode.com/gh_mirrors/sr/srs-windows 在Windows平台上构建专业级流媒体服务系统&#xff0c;需要综合考虑协议兼容性、性能优化和部署架…...

Win10系统清理避坑指南:你的BAT脚本真的安全吗?盘点那些不能乱删的文件

Win10系统清理避坑指南&#xff1a;BAT脚本安全操作手册每次看到那些号称"一键清理系统垃圾"的BAT脚本在技术论坛被疯狂转发&#xff0c;我的工程师朋友老张就会忍不住摇头。上周他刚帮一位设计师修复了崩溃的Photoshop——原因正是某个清理脚本删除了Adobe的临时工作…...

如何从零构建智能FOC轮腿机器人:完整开源硬件系统终极指南

如何从零构建智能FOC轮腿机器人&#xff1a;完整开源硬件系统终极指南 【免费下载链接】foc-wheel-legged-robot Open source materials for a novel structured legged robot, including mechanical design, electronic design, algorithm simulation, and software developme…...

告别数据饥荒:用PyTorch手把手实现原型网络(Prototypical Networks)做电影评论情感分类

告别数据饥荒&#xff1a;用PyTorch手把手实现原型网络做电影评论情感分类 在自然语言处理领域&#xff0c;情感分析一直是热门研究方向&#xff0c;但现实中的开发者常面临一个尴尬困境&#xff1a;标注数据太少。传统深度学习方法动辄需要成千上万的标注样本&#xff0c;而实…...

Office RibbonX Editor:简单三步打造你的专属Office界面

Office RibbonX Editor&#xff1a;简单三步打造你的专属Office界面 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/gh_mirrors/of/office-ribbonx-edit…...

告别SVN恐惧症:美术策划也能轻松上手的Unity PlasticSCM极简入门(附团队项目拉取实战)

告别SVN恐惧症&#xff1a;美术策划也能轻松上手的Unity PlasticSCM极简入门&#xff08;附团队项目拉取实战&#xff09; 在游戏开发团队中&#xff0c;版本控制系统是协作的基石&#xff0c;但传统工具如SVN往往让非技术成员望而生畏。当美术资源频繁更新、策划案不断迭代时&…...

ubuntu环境下为python项目配置taotoken多模型api密钥与端点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Ubuntu环境下为Python项目配置Taotoken多模型API密钥与端点 1. 准备工作 在Ubuntu系统上为Python项目接入Taotoken&#xff0c;首…...

从无线破解到PDF解密:盘点那些容易被忽略的‘非主流’密码审计场景与工具

密码安全审计的隐秘战场&#xff1a;从无线网络到加密文档的实战指南 当大多数人谈论密码安全时&#xff0c;脑海中浮现的往往是服务器登录、数据库访问这些企业级场景。然而在数字生活的每个角落&#xff0c;从家庭Wi-Fi到工作文档&#xff0c;密码保护的脆弱性同样可能成为安…...

告别复杂模型:用Python+OpenCV+dlib实现简易驾驶员疲劳监测(附完整代码)

轻量级驾驶员疲劳监测系统&#xff1a;PythonOpenCVdlib实战指南 在长途驾驶或夜间行车时&#xff0c;疲劳是导致交通事故的重要因素之一。传统基于嵌入式设备的疲劳监测系统往往需要专用硬件&#xff0c;增加了开发成本和部署难度。本文将介绍如何利用Python生态中的OpenCV和d…...