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

SpringClud一站式学习之Eureka服务治理(二)

SpringClud一站式学习之Eureka服务治理

  • 引言
  • 1. 搭建Eureka Server
    • 1.1. 添加Eureka Server依赖
    • 1.2. 添加 Eureka Server注解
    • 1.3. 配置Eureka Server
    • 1.4. 运行Eureka Server
  • 2. 搭建Eureka Client 服务提供者
    • 2.1. 添加依赖
    • 2.2. 添加注解
    • 2.3. 配置Eureka Client
    • 2.4. 启动服务
  • 3. 搭建Eureka Client 消费者
    • 3.1. 添加依赖
    • 3.2. 配置
    • 3.3. 服务消费者获取服务提供者信息
    • 3.4. 启动服务消费者
  • 4 搭建集群

引言

Eureka是Netflix开源的一款服务发现框架,它主要用于在微服务架构中定位服务,是服务之间调用的枢纽和关键。在微服务架构中,服务实例可能会动态地增加或减少,Eureka提供了服务注册和发现的功能,使得服务实例可以相互发现对方,而不需要硬编码服务地址。

Eureka的两个主要组件:
Eureka Server:服务注册中心,用于维护各个微服务实例的注册信息,各个微服务实例在启动时会向Eureka Server注册自己的信息,并定期发送心跳以表明自己的存活状态。当服务实例关闭或者网络问题导致心跳丢失时,Eureka Server会从注册信息中移除该实例。

Eureka Client:服务提供者和消费者都会使用Eureka Client来与Eureka Server进行通信。服务提供者在启动时会向Eureka Server注册自己的服务地址和端口,服务消费者通过Eureka Server查询服务提供者的地址,然后直接调用。
在这里插入图片描述
Eureka是Spring Cloud体系中的核心组件之一,它与Spring Cloud的其他组件(如Ribbon、Feign、Hystrix等)协同工作,提供了一套完整的微服务解决方案。通过Eureka,开发者可以更容易地实现服务的注册与发现,从而构建和管理复杂的微服务系统。

1. 搭建Eureka Server

1.1. 添加Eureka Server依赖

新建立springboot工程,添加Eureka Server依赖,

<?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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.7.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>eurakaservertrue</artifactId><version>0.0.1-SNAPSHOT</version><name>eurakaservertrue</name><description>Demo project for Spring Boot</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><scope>test</scope></dependency></dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

1.2. 添加 Eureka Server注解

在启动类上添加注解,表明为Eureka Server
@EnableEurekaServer

1.3. 配置Eureka Server

spring.application.name=eurakaservertrue
server.port=8761
#从注册表中获取信息
eureka.client.fetch-registry=false
#允许自己注册到服务中
eureka.client.register-with-eureka=false

1.4. 运行Eureka Server

在这里插入图片描述
访问http://localhost:8761/ 出现此界面表示已经搭建好了服务
在这里插入图片描述

2. 搭建Eureka Client 服务提供者

2.1. 添加依赖

新建立一个spirngboot工程,并添加Eureka Client依赖

<?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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.7.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>erakaclientprovide</artifactId><version>0.0.1-SNAPSHOT</version><name>erakaclientprovide</name><description>Demo project for Spring Boot</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><scope>test</scope></dependency></dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2.2. 添加注解


@EnableDiscoveryClient

2.3. 配置Eureka Client

spring.application.name=erakaclientprovide
server.port=8081eureka.client.service-url.defaultZone: http://localhost:8761/eureka/
#自定义实例ID
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}${server.port}

2.4. 启动服务

在这里插入图片描述

3. 搭建Eureka Client 消费者

3.1. 添加依赖

<?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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.7.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>erakaclientconsumer</artifactId><version>0.0.1-SNAPSHOT</version><name>erakaclientconsumer</name><description>Demo project for Spring Boot</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><scope>test</scope></dependency></dependencies><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

3.2. 配置

spring.application.name=erakaclientconsumer
server.port=8082eureka.client.service-url.defaultZone: http://localhost:8761/eureka/
#自定义实例ID
eureka.instance.instance-id=${spring.application.name}:${spring.cloud.client.ip-address}${server.port}

3.3. 服务消费者获取服务提供者信息

编写controller 方法获取

package com.example.erakaclientconsumer.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;
import java.util.stream.Collectors;/*** @Auther: lifang* @Description* @Date: $ $* $* $**/
@RestController
public class EurekeController {@Autowiredprivate DiscoveryClient discoveryClient;//获取Eureka服务中所有的提供者信息@GetMapping("/instance")public List<ServiceInstance> getApplication(){List<ServiceInstance> instances=discoveryClient.getServices().stream().map(sid->discoveryClient.getInstances(sid)).collect(Collectors.toList()).stream().flatMap(list->list.stream()).collect(Collectors.toList());return instances;}
}

3.4. 启动服务消费者

访问 http://localhost:8761/
在这里插入图片描述
访问 http://localhost:8082/instance
在这里插入图片描述

[{"metadata": {"management.port": "8082"},"secure": false,"uri": "http://localhost:8082","instanceInfo": {"instanceId": "erakaclientconsumer:192.168.10.1��8082","app": "ERAKACLIENTCONSUMER","appGroupName": null,"ipAddr": "192.168.10.1","sid": "na","homePageUrl": "http://localhost:8082/","statusPageUrl": "http://localhost:8082/actuator/info","healthCheckUrl": "http://localhost:8082/actuator/health","secureHealthCheckUrl": null,"vipAddress": "erakaclientconsumer","secureVipAddress": "erakaclientconsumer","countryId": 1,"dataCenterInfo": {"@class": "com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo","name": "MyOwn"},"hostName": "localhost","status": "UP","overriddenStatus": "UNKNOWN","leaseInfo": {"renewalIntervalInSecs": 30,"durationInSecs": 90,"registrationTimestamp": 1731075179095,"lastRenewalTimestamp": 1731075329123,"evictionTimestamp": 0,"serviceUpTimestamp": 1731075179095},"isCoordinatingDiscoveryServer": false,"metadata": {"management.port": "8082"},"lastUpdatedTimestamp": 1731075179095,"lastDirtyTimestamp": 1731075179034,"actionType": "ADDED","asgName": null},]

4 搭建集群

集群多个节点组成的服务器群,一个Eureka Server服务是一个节点,不同节点之间服务信息是相互复制的,对于Eureka Server不同的节点代码是一样的,不同的是地址不同,因此我们通过配置不同环境的方法启动2个Eureka Server,创建 application-A.properties 和application-B.properties,在application.properties,指定当前的配置文件,启动后更改下一个节点的配置文件;

server.port=8762
eureka.client.service-url.defaultZone: http://localhost:8761/eureka/
server.port=8761
eureka.client.service-url.defaultZone: http://localhost:8762/eureka/
spring.profiles.active=B

在这里插入图片描述

相关文章:

SpringClud一站式学习之Eureka服务治理(二)

SpringClud一站式学习之Eureka服务治理 引言1. 搭建Eureka Server1.1. 添加Eureka Server依赖1.2. 添加 Eureka Server注解1.3. 配置Eureka Server1.4. 运行Eureka Server 2. 搭建Eureka Client 服务提供者2.1. 添加依赖2.2. 添加注解2.3. 配置Eureka Client2.4. 启动服务 3. 搭…...

空间解析几何【上】

文章目录 两向量共线&三向量共面线段定比分点内积&外积&混合积内积(点积)外积(叉积)几何性质混合积轮换对称性对换改变一次符号线性性质几何性质球面方程特点空间平面参数方程行列式方程(点位式)向量式方程三点式方程行列式方程点法式一般式截距式法式方程离…...

Python 获取PDF的各种页面信息(页数、页面尺寸、旋转角度、页面方向等)

目录 安装所需库 Python获取PDF页数 Python获取PDF页面尺寸 Python获取PDF页面旋转角度 Python获取PDF页面方向 Python获取PDF页面标签 Python获取PDF页面边框信息 了解PDF页面信息对于有效处理、编辑和管理PDF文件至关重要。PDF文件通常包含多个页面&#xff0c;每个页…...

独孤思维:曾经副业赚大钱的人,怎么不见了

01 总有一双眼睛默默关注你。 别以为自己每天做项目&#xff0c;日更文章&#xff0c;没人看。 总会有人默默观察你。 看你能坚持多久&#xff0c;看多段时间&#xff0c;你是不是还在。 今天上午&#xff0c;有个2年前认识的副业同行&#xff0c;今天突然跟我发消息。 说…...

OpenGL 异常处理-glCreateShader失败

【1】glCreateShader创建顶点着色器时候报错&#xff0c;如下 【2】原因分析 初始化失败&#xff0c;你使用一个扩extension loader library来访问现代OpenGL&#xff0c;当需要初始化它时&#xff0c;加载器需要一个当前的上下文来加载 【3】解决办法 GLenum glew_err gle…...

【el-pagination的使用及修改分页组件的整体大小修改默认样式的宽度详细教程】

今天遇到个bug&#xff0c;使用element-puls中的分页的时候&#xff0c;长度会超出盒子&#xff0c;今天教大家如何修改el-pagination的宽度&#xff0c;以及修改分页组件的整体大小 直接修改 style"width: 100%; margin-top: 10px"不生效 控制台修改el-pagination…...

Uniapp的学习

uniapp的内容和vue网页开发会有很多区别&#xff0c;但是都是基于vue开发的&#xff0c;大多数业务还是在vue打交道&#xff0c;但是这些uniapp的特殊的知识点也是要掌握好的。 基本配置 创建uniapp项目 npx degit dcloudio/uni-preset-vue#vite-ts 项目名 &#xff1a;用于…...

C#-万物之父object、装箱拆箱

万物之父&#xff1a;object 基于里氏替换原则&#xff0c;可以用object容器装载一切类型的变量。可以用来表示不确定类型&#xff0c;作为函数参数类型 object是所有类型的基类 装箱拆箱 用object存值类型&#xff08;装箱&#xff09;→ 把值类型用引用类型存储&#xff0c;…...

AI大模型重塑软件开发流程:从自动化编码到智能协作的未来展望

目录 1. 引言&#xff1a;AI大模型的崛起与软件开发的变革 1.1 AI大模型的兴起与发展背景 1.2 软件开发的现状与痛点 1.3 AI大模型如何解决这些问题 2. AI大模型的工作原理与技术背景 2.1 什么是AI大模型&#xff1f; 2.2 深度学习与自然语言处理技术的演变 2.3 大模型…...

HTB:GreenHorn[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机TCP端口进行开放扫描 再次使用nmap对这三个端口进行脚本、服务扫描 尝试先通过curl访问靶机80端口 将靶机IP与该域名写入hosts使DNS本地解析 使用浏览器访问greenhorn.htb 使用Wappalyzer插件查看该页面技术栈 尝试在sea…...

SelfAttention在Ascend上的实现

1 SelfAttention是什么&#xff1f; Self-Attention&#xff08;自注意力&#xff09;机制是深度学习领域的一种重要技术&#xff0c;尤其在自然语言处理&#xff08;NLP&#xff09;任务中得到广泛应用。它是 Transformer 架构的核心组成部分之一&#xff0c;由 Vaswani 等人…...

C#设计模式

文章目录 项目地址一、开放封闭原则1.1 不好的版本1.2 将BankProcess的实现改为接口1.3 修改BankStuff类和IBankClient类二、依赖倒置原则2.1 高层不应该依赖于低层模块2.1.1 不好的例子2.1.2 修改:将各个国家的歌曲抽象2.2 抽象不应该依于细节2.2.1 不同的人开不同的车(接口…...

仪表板展示|DataEase看中国:历年双十一电商销售数据分析

背景介绍 2024年“双十一”购物季正在火热进行中。自2009年首次推出至今&#xff0c;“双十一”已经成为中国乃至全球最大的购物狂欢节&#xff0c;并且延伸到了全球范围内的电子商务平台。随着人们消费水平的提升以及电子商务的普及&#xff0c;线上销售模式也逐渐呈现多元化…...

急着骂华为?我劝你别急

文 | AUTO芯球 作者 | 雷慢 赛力斯这下怒了&#xff01; 要对那些华为黑、问界黑出手了&#xff0c; 就在这几天&#xff0c;赛力斯起诉了一批蓄意抹黑、散步虚假信息的人。 起因是什么&#xff0c;听我慢慢说&#xff0c; 今年7月&#xff0c;佛山一辆问界M7发生交通事故…...

虚拟机linux7.9下安装mysql

1.MySQL官网下载安装包&#xff1a; MySQL :: Download MySQL Community Server https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 2.解压文件&#xff1a; #tar xvzf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 3.移动文件&#…...

【Linux】一篇文章轻松搞懂基本指令

本篇所有展示代码均是在超级用户的权限下进行的&#xff0c;如果不是超级用户并且一些命令执行的和我的不太一样&#xff0c;那么可以试着在对应命令前暂且加上sudo&#xff0c;我们在下一篇会讲权限问题&#xff0c;到时候再转换为普通用户。 本篇展示的内容是基于CentOs进行…...

深入浅出理解Spring和SpringBoot,剖析自动配置源码

文章目录 1.Spring2.SpringBoot3.小结 1.摘要 本文旨在带大家理解Spring框架和SpringBoot框架最为核心的部分&#xff0c;自Spring和SpringBoot问世以来&#xff0c;给Web开发掀起了巨大的浪潮&#xff0c;极大的缩短项目开发周期&#xff0c;下面将带大家分析Spring和SpringBo…...

Spring配置文件初始化加载(一)

1.枚举 public enum TestEnum {type_01("01", "zeroTest01ServiceImpl"),type_02("02", "zeroTest02ServiceImpl"),type_03("03", "zeroTest03ServiceImpl");private String type;private String pathClass; } …...

正则表达式 - 简介

正则表达式 - 简介 正则表达式&#xff08;Regular Expression&#xff0c;简称Regex&#xff09;是一种用于处理字符串的强大工具&#xff0c;它允许用户通过特定的模式&#xff08;pattern&#xff09;来搜索、匹配、查找和替换文本中的数据。正则表达式广泛应用于文本编辑器…...

【电机控制器】STC8H1K芯片——ADC电压采集

【电机控制器】STC8H1K芯片——ADC电压采集 文章目录 [TOC](文章目录) 前言一、ADC1.ADC初始化1.ADC_CONTR2.ADCCFG3.ADCTIM4.代码 2.ADC读取1.ADC_RES、ADC_RESL2.代码 3.VREF电压读取——MCU工作电压1.MCU工作电压计算公式2.代码 4.ADC被转换通道的输入电压读取1.ADC被转换通…...

水墨江南模型效果对比:不同参数下的笔触与渲染风格

水墨江南模型效果对比&#xff1a;不同参数下的笔触与渲染风格 最近在尝试用AI生成水墨画&#xff0c;发现一个挺有意思的现象&#xff1a;同一个“水墨江南”模型&#xff0c;用不同的参数设置&#xff0c;画出来的效果天差地别。有时候是寥寥几笔的写意小品&#xff0c;有时…...

Kindle漫画转换终极方案:如何解决电子阅读器上的格式兼容性问题

Kindle漫画转换终极方案&#xff1a;如何解决电子阅读器上的格式兼容性问题 【免费下载链接】kcc KCC (a.k.a. Kindle Comic Converter) is a comic and manga converter for ebook readers. 项目地址: https://gitcode.com/gh_mirrors/kc/kcc 你是否曾经尝试在Kindle上…...

Godep历史意义揭秘:Go依赖管理工具的开创者如何改变开发方式

Godep历史意义揭秘&#xff1a;Go依赖管理工具的开创者如何改变开发方式 【免费下载链接】godep dependency tool for go 项目地址: https://gitcode.com/gh_mirrors/go/godep Godep作为Go语言依赖管理工具的开创者&#xff0c;在Go生态系统的演进历程中扮演了至关重要的…...

KEPServerEX与SQLServer数据库的无缝集成指南

1. KEPServerEX与SQLServer集成的核心价值 在工业自动化和数据采集领域&#xff0c;KEPServerEX作为领先的通信平台&#xff0c;与SQLServer数据库的集成能够实现设备数据到关系型数据库的高效流转。这种组合特别适合需要长期存储设备运行数据、生成生产报表或进行数据分析的场…...

终极指南:buger/jsonparser如何10倍加速处理第三方API不确定性数据

终极指南&#xff1a;buger/jsonparser如何10倍加速处理第三方API不确定性数据 【免费下载链接】jsonparser One of the fastest alternative JSON parser for Go that does not require schema 项目地址: https://gitcode.com/gh_mirrors/js/jsonparser 在处理第三方AP…...

如何永久保存微信聊天记录:免费工具实现数据可视化与年度报告生成

如何永久保存微信聊天记录&#xff1a;免费工具实现数据可视化与年度报告生成 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trendi…...

Z-Image-Turbo商业应用探索:稳定可靠的AI绘画方案推荐

Z-Image-Turbo商业应用探索&#xff1a;稳定可靠的AI绘画方案推荐 1. 商业级AI绘画的新选择 在数字内容创作需求爆炸式增长的今天&#xff0c;Z-Image-Turbo作为阿里通义实验室开源的文生图模型&#xff0c;凭借其卓越的稳定性和高效性&#xff0c;正在成为商业应用领域的新宠…...

敏捷团队沟通技巧:减少冲突的5个方法

在敏捷开发环境中&#xff0c;软件测试从业者常面临跨职能冲突的挑战。数据显示&#xff0c;超过70%的项目延迟源于沟通不畅&#xff0c;尤其在测试与开发团队之间&#xff0c;角色目标错位&#xff08;如开发侧重快速交付&#xff0c;测试聚焦风险防控&#xff09;易引发摩擦。…...

FORK客户端与GitHub高效协作指南

1. 为什么选择FORK客户端与GitHub协作 作为一个常年混迹在代码仓库的老司机&#xff0c;我试过几乎所有主流的Git图形化工具。FORK客户端给我的第一印象就是——清爽。没有复杂的界面&#xff0c;没有多余的功能&#xff0c;就像它的名字一样&#xff0c;专注做好代码分支管理…...

Java学习——String 类的不可变性、底层实现(JDK1.8+)

目录 一、核心定义与设计思想 1. 核心定义 2. 核心设计思想 二、底层实现原理&#xff08;含 JDK 源码分析 / 反编译验证&#xff09; 1. JDK1.8 String 核心源码解析 2. 字符串常量池&#xff08;JDK1.8 底层&#xff09; 3. 反编译验证&#xff08;不可变性 编译器优…...