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

【SpringCloud微服务实战01】Eureka 注册中心

  • 前言

在 Eureka 架构中,微服务角色有两类:

  •  EurekaServer :服务端,注册中心

                记录服务信息
                心跳监控

  • EurekaClient :客户端

         Provider :服务提供者,例如案例中的 user-service
                         注册自己的信息到 EurekaServer
                        每隔 30 秒向 EurekaServer 发送心跳
         consumer :服务消费者,例如案例中的 order-service
                        根据服务名称从 EurekaServer 拉取服务列表
                         基于服务列表做负载均衡,选中一个微服务后发起远程调用

架构图:

常见问题:

  • 消费者该如何获取服务提供者具体信息?

                服务提供者启动时向 eureka 注册自己的信息
                eureka 保存这些信息
                消费者根据服务名称向 eureka 拉取提供者信息

  • 如果有多个服务提供者,消费者该如何选择?

                服务消费者利用负载均衡算法,从服务列表中挑选一个

  • 消费者如何感知服务提供者健康状态?

                服务提供者会每隔 30 秒向 EurekaServer 发送心跳请求,报告健康状态
                eureka 会更新记录服务列表信息,心跳不正常会被剔除
                消费者就可以拉取到最新的信息 


 

一、Eureka服务端搭建

1. 创建项目,引入 spring-cloud-starter-netflix-eureka-server 的依赖:

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

2. 编写启动类,添加 @EnableEurekaServer 注解

3. 添加 application.yml 文件,编写下面的配置:

server:port: 10086
spring:application:name: eurekaserver
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/

启动后访问管理页面http://127.0.0.1:10086:

二、Eureka服务注册 

1. 分别 user-service 和 order-service 项目中引入 spring-cloud-starter-netflix-eureka-client 的依赖

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

2. 在 application.yml 文件,分别编写下面的配置:

spring:application:name: userservice #orderservice
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eureka/

这里还可以通过复制userService配置 修改VM:-Dserver.port=8082,模拟一个服务启动多个实例:

三、Eureka服务发现(服务拉取)

下面以在 order-service 服务中拉取 user-service中的查询用户信息接口为例:

1、用服务提供者的 服务名称 远程调用服务接口:

String url = "http://userservice/user/" + order.getUserId();

2、给 RestTemplate 添加 @LoadBalanced 注解(实现多示例负载均衡)

@Bean
@LoadBalanced
public RestTemplate restTemplate() {return new RestTemplate();
} 

相关文章:

【SpringCloud微服务实战01】Eureka 注册中心

前言 在 Eureka 架构中&#xff0c;微服务角色有两类&#xff1a; EurekaServer &#xff1a;服务端&#xff0c;注册中心 记录服务信息 心跳监控 EurekaClient &#xff1a;客户端 Provider &#xff1a;服务提供者&#xff0c;例如案例中的 user-service …...

Python之函数进阶-柯里化

Python之函数进阶-柯里化 柯里化是一种将多参数函数转化为单参数高阶函数的技术。 具体来说&#xff0c;柯里化过程会将一个接受多个参数的函数&#xff0c;转换成一系列接受一个参数的函数&#xff0c;这些函数在内部组合起来&#xff0c;最终完成原函数的运算。 柯里化是一…...

Spring Cloud项目整合Sentinel及简单使用

说明&#xff1a;Sentinel是阿里巴巴开发的微服务治理中间件&#xff0c;可用于微服之间请求的流量管控、权限控制、熔断降级等场景。本文介绍如何在Spring Cloud项目中整合Sentinel&#xff0c;以及Sentinel的简单使用。 环境 首先搭建一个简单的微服务环境&#xff0c;有以…...

【话题】人工智能迷惑行为大赏

随着ChatGPT热度的攀升&#xff0c;越来越多的公司也相继推出了自己的AI大模型&#xff0c;如文心一言、通义千问等。各大应用也开始内置AI玩法&#xff0c;如抖音的AI特效&#xff5e;在使用过程中往往会遇到一些问题&#xff0c;让你不得不怀疑&#xff0c;这真的是人工智能吗…...

Jsp在Javaweb中扮演什么角色?

1.什么是Jsp JSP&#xff08;Java Server Pages&#xff0c;Java 服务器页面&#xff09;是一种动态网页技术&#xff0c;它允许在 HTML 页面中嵌入 Java 代码&#xff0c;并由 Web 服务器在请求页面时动态生成 HTML 页面。JSP 通常用于创建动态 Web 内容&#xff0c;如交互式表…...

部署docker仓库harbor

1、下载包 1、包已上传有两个harbor.v2.6.0.tar与harbor.tar 2、harbor.tar解压后会生成harbor目录&#xff0c;将harbor.v2.6.0.tar移动到harbor目录下。 3、执行harbor目录下的install.sh 4、执行完后修改配置文件 2、修改配置文件 vim /root/harbor/make/ harbor.yml.tmpl …...

Linux CentOS系统安装Spug并结合内网穿透实现远程访问本地运维平台

目录 前言 1. Docker安装Spug 2 . 本地访问测试 3. Linux 安装cpolar 4. 配置Spug公网访问地址 5. 公网远程访问Spug管理界面 6. 固定Spug公网地址 结语 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊Linux CentOS系统安装Spug并结合…...

阿里云第一次面试记录

java多态&#xff1f; 多态表示一个对象具有多种的状态&#xff0c;具体表现为父类的引用指向子类的实例 Fu f Zi z(); 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口&#xff0c;使用不同的实例而执行不同操作 特点&#xff1a; 对象类型和引用类型…...

AndroidStudio跑马灯实现

在activity_main.xml中编写如下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_h…...

mysql笔记:12. 数据备份与还原

文章目录 一、数据备份1. 备份单个数据库2. 备份多个数据库3. 备份所有数据库 二、数据还原1. mysql命令2. source命令 在操作数据库时&#xff0c;难免会发生一些意外情况造成数据丢失。为了确保数据的安全&#xff0c;需要对数据库中的数据进行备份&#xff0c;这样当遇到数据…...

react native使用TS实现路由

一、入口文件app.jsx的配置 入口文件最好还是要保留jsx import { NavigationContainer } from react-navigation/native; import { navigationRef } from "./src/views/RootNavigation";const App () > {return&#xff08;<NavigationContainer ref{navigat…...

手机充值的功能测试框架 - 测试要点

手机充值有微信营销活动的、有 APP 页面应用等&#xff0c;以下是我以前公司的手机充值话费或流量应用的测试要点&#xff0c;分享给大家参考下。 一、手机号码输入框检查 1、手机号码框要控制成只能输入11位数字的文本框。 2、输入以非1开头的手机号&#xff0c;给出提示&a…...

U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装

U盘启动盘 制作Linux Ubuntu CentOS系统启动盘 系统安装 准备条件 准备一个U盘&#xff0c;建议容量至少为8GB&#xff0c;以便存放系统镜像文件 一台已经安装好操作系统的计算机&#xff0c;用于制作U盘启动盘 Ubuntu和CentOS的Linux ISO镜像文件。可以从官方网站或相关资源…...

Nodejs 第五十四章(net)

net模块是Node.js的核心模块之一&#xff0c;它提供了用于创建基于网络的应用程序的API。net模块主要用于创建TCP服务器和TCP客户端&#xff0c;以及处理网络通信。 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的传输协议&#xff0c;用于…...

渗透测试修复笔记 - 04 nacos 可能会导致未经授权的用户获取到系统中的敏感信息的漏洞

问题&#xff1a;该漏洞可能会导致未经授权的用户获取到系统中的敏感信息。 http://ip地址:8848/nacos/v1/auth/users?pageNo1&pageSize9 最直接的解决办法就是升级nacos版本 如果不升级的话还是沿用旧版本就修改相关配置 当前版本为2.0.4 1.nacos的docker-compose文件…...

初级代码游戏的专栏介绍与文章目录

我的github&#xff1a; codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 一、大型专题 1.1 C嵌入式HTTP服务器 C嵌入式HTTP服务器_初级代码游戏的博…...

【Redis系列】深入了解 Redis:一种高性能的内存数据库

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

C语言例:表达式(a=2,3),a+1的值

题目&#xff1a;设int a; 则表达式(a2,3),a1的值 #include<stdio.h> int main(void) {int a0;int b;int c;b (a2,4);c (a2,3),a1;printf("a1%d\n",a1); //a1 3;printf("a2,4的值为&#xff1a;%d\n",b); //a2,4的值为&…...

基于java的公寓报修管理系统设计与实现(程序+文档+数据库)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…...

Lua 函数前的冒号和点号,你知道他们的区别吗?

1. 函数前的冒号和点号 点号&#xff08;.&#xff09;和冒号&#xff08;:&#xff09;的区别主要在于是否自动处理self参数。 在Lua中&#xff0c;函数定义时前面有点号&#xff08;.&#xff09;和冒号&#xff08;:&#xff09;的区别主要体现在函数如何处理其第一个参数…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...