springcloud-Eureka注册中心

如果你要理解这个技术博客博客专栏 请先学习以下基本的知识:

  • 什么是微服务
  • 什么是服务拆分
  • 什么是springcloud

Springcloud为微服务开发提供了一个比较泛用和全面的解决框架,springcloud继承了spring一直以来的风格——不重复造轮子,里面很多的组件都是将其他其他开源组件改造集成进来。
在众多的组件当中 我们先从springcloud修炼——Eureka注册中心开始吧

服务调用

为了照顾新手 我们先重申一个基本的概念 就是服务调用。

在当前流行的软件微服务架构中,一个系统会被拆分成多个小系统 我们称为多个服务,比如外卖系统 我们拆为 前台A 订餐B 付款C 送货D

他们直接相互调用 相互回应,一个服务既可以是服务调用者 也可以是服务提供者

设想一个简单的场景:

A调用B ,

第一A怎么获取B服务的地址? 如果写死在代码里面 比如123.122.13.1:8080 这样会很死板,而且B服务可能有很多个实例服务器
A怎么知道要调哪一个?
还有如果B的一个服务器突然挂掉了 那怎么让A知道 这个服务器不能用?

是不是很头大?

Eureka就是为了解决这些奇葩问题

Eureka

在这里插入图片描述

Eureka是一个服务注册中心,服务注册这个词 之前在各种七七八八的集群架构里面经常听到,它是一个管理者 一个管家。总揽全局。

当你需要调用某个方法获取一些数据,就不是调自己的service方法,而是远程调其他项目的服务。

由此 就有了 服务的调用者 和提供者。 为了方便整洁的管理这些七七八八各样的服务(每个服务可能即使提供者又是消费者,它调用其他的服务,也为其他项目提供服务) 就有了服务注册中心。

简单理解就是 所有的服务都在注册中心 登记造册,这样方便管理 也方便寻找。

回到上一节里面那个A调用B的问题里面

A怎么知道B的地址: 答 B把自己的所有服务的地址注册到Eureka server中 A自己去Eureka中找
B的一个服务器挂了怎么办? 答Eureka会有心跳检测 如果B的一个服务器挂了 就把他下线


实践

在这里插入图片描述
我们创建三个项目 两个相互调用的服务 和一个 eureka服务,对于eureka来说 这两个服务都是它的客户端,
我们先部署启动eureka服务端:

三步走 依赖 启动类 配置文件

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


@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {

        SpringApplication.run(EurekaApplication.class, args);
    }
}

server:
  port: 10086 # 服务端口
spring:
  application:
    name: eurekaserver # eureka的服务名称
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

启动成功之后:
在这里插入图片描述

现在我们部署两个客户端 以userservice为例 另一个同理:

server:
  port: 8081
spring:
  application:
    name: userservice
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

这里两个要点 第一 application.name 就是注册到eureka的名字 让eureka认识你

第二就是 eureka服务器的地址 就是我们刚才本地启动的那个地址

启动成功之后发现 就注册上去了
在这里插入图片描述
。。

ok两个都注册好了 现在关键来了。

正常情况下如果要调用另一个服务userservice 我们用restTemplate要知道具体地址:localhost:8081

      // 2.利用RestTemplate发起http请求,查询用户
        // 2.1.url路径
        String url = "http://localhost:8081/user/" + order.getUserId();
        // 2.2.发送http请求,实现远程调用
        User user = restTemplate.getForObject(url, User.class);
        // 3.封装user到Order

现在不需要了 服务的调用方和被调用方已经注册到了eureka,我们只需要用服务名 userservice

     // 2.1.url路径
        String url = "http://userservice/user/" + order.getUserId();
        // 2.2.发送http请求,实现远程调用
        User user = restTemplate.getForObject(url, User.class);

restTemplate内部已经封装了这个过程——根据服务名

  1. 先看看当前服务有没有配置eureka 如果没有那gg
  2. 如果配置好了 就去eureka服务器 去问问 有没有一个叫 userservice的服务在这里注册 我要调用它

这样eureka的作用就体现出来了

当然后面我们的博客中会介绍更多方便的远程调用方式,但是主要的是大家要理解

eureka到底是做什么的 它在微服务中扮演一个什么样的角色 以及你的服务要注册eureka 怎么样配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/473544.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++ 指针大小

C的一个指针占内存几个字节&#xff1f; 结论&#xff1a; 取决于是64位编译模式还是32位编译模式&#xff08;注意&#xff0c;和机器位数没有直接关系&#xff09; 在64位编译模式下&#xff0c;指针的占用内存大小是8字节在32位编译模式下&#xff0c;指针占用内存大小是4字…

JavaScript 使用 Promise 实现 sleep 休眠

以下为代码实现&#xff0c;该代码实现了每隔1秒打印一次当前时间&#xff0c;总共打印5次的功能 for(let i 1; i < 5; i){console.log(new Date().toString())await new Promise(resolve>setTimeout(resolve,1000)) }实现休眠的核心代码为: await new Promise(resolv…

回归预测 | Matlab基于SAO-LSTM雪消融算法优化长短期记忆神经网络的数据多输入单输出回归预测

回归预测 | Matlab基于SAO-LSTM雪消融算法优化长短期记忆神经网络的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SAO-LSTM雪消融算法优化长短期记忆神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SAO-LSTM雪消融…

使用el-cascader组件写下拉级联多选并且具有全选功能

样式 说明&#xff1a; 级联选择器中加上全选的按钮&#xff0c; 并且保证数据响应式。 思路 因为是有全选的功能&#xff0c;所以不能直接使用el-cascader组件&#xff0c; 而是选择使用el-select组件&#xff0c; 在此组件内部使用el-cascader-panel级联面板全选按钮也是…

【机器学习】科学库使用第2篇:机器学习概述,学习目标【附代码文档】

机器学习&#xff08;科学计算库&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习&#xff08;常用科学计算库的使用&#xff09;基础定位、目标&#xff0c;机器学习概述定位,目标,学习目标,学习目标。机器学习概述&#xff0c;1.3 人…

idea-不同项目使用不同maven版本

背景 idea一直使用的是maven3.6. 新接的项目要求maven要3.9&#xff0c;所以down下来以后maven的dependencies一直加载失败。 报错信息为 Full classname legend:CustomModelValidator: "org.jetbrains.idea.maven.server.embedder.CustomModelValidator" DefaultM…

RabbitMQ--03--SpringAMQP(SpringBoot集成RabbitMQ)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 SpringAMQP1.SpringBoot 的支持https://spring.io/projects/spring-amqp 2.RabbitTemplate3.RabbitListener&#xff08;终极监听方案&#xff09;4.RabbitConfig--…

用pdf2docx将PDF转换成word文档

pdf2docx是一个Python模块&#xff0c;可以将PDF文件转换为docx格式的Word文档。 pdf2docx模块基于Python的pdfminer和python-docx库开发&#xff0c;可以在Windows、Linux和Mac系统上运行。它可以从PDF文件中提取文本和图片&#xff0c;并将其转换成可编辑的Word文档&#xf…

Photoshop 2024让图像处理更智能、更高效@

Photoshop 2024是一款功能强大的图像处理软件&#xff0c;广泛应用于创意设计和图像处理领域。它提供了丰富的绘画和编辑工具&#xff0c;包括画笔、铅笔、颜色替换、混合器画笔等&#xff0c;使用户能够轻松进行图片编辑、合成、校色、抠图等操作&#xff0c;实现各种视觉效果…

CAPL如何实现TCP Packet的option字段

在TCP协议中,主机可以根据自身的需要决定TCP通信时是否携带option字段,来扩展TCP功能。option字段属于TCP首部的扩展部分,且是可选项,TCP根据首部中的offset字段值确定TCP报文是否携带option字段。 TCP首部固定的部分有20个字节,如果没有扩展部分(option字段),20个字节…

万界星空科技铜杆加工行业生产管理MES系统

传统的铜管加工方法有&#xff1a; &#xff08;1&#xff09;铜管挤压加工技术&#xff08;2&#xff09;铜管上引连铸法&#xff08;3&#xff09;铜管(有缝)焊接生产技术&#xff08;4&#xff09;铸轧法生产精密铜管铸轧法 生产精密铜管是一种全新的生产工艺&#xff0c;…

像uniapp image标签一样对图片进行缩放和裁剪

像uniapp image标签一样对图片进行缩放和裁剪 0 前言提示1 实现1.1 不保持纵横比缩放图片&#xff0c;使图片的宽高完全拉伸至填满 image 元素1.2 保持纵横比缩放图片&#xff0c;使图片的长边能完全显示出来。也就是说&#xff0c;可以完整地将图片显示出来。1.3 保持纵横比缩…

git如何在某个commitId的状态提交到一个分支

有些时候&#xff0c;我们在使用子仓库&#xff0c;或者其他情况&#xff0c;会有一个状态是当前的git仓库是在一个commitId上&#xff0c;而没有在一个分支上&#xff1a; 这时如果想要把基于这个commitId创建一个分支&#xff0c;可以使用下面这个命令&#xff1a; git push…

ubuntu20.04搭建rtmp视频服务

1.安装软件 sudo apt-get install ffmpeg sudo apt-get install nginx sudo apt-get install libnginx-mod-rtmp 2.nginx配置 修改/etc/nginx/nginx.conf文件&#xff0c;在末尾添加&#xff1a; rtmp {server {listen 1935;application live {live on;}} } 3.视频测试 本…

OpenAI的GPT已达极限,更看好AI Agent

日前&#xff0c;比尔盖茨发表文章表示&#xff1a;AI Agent不仅会改变人与电脑的互动方式&#xff0c;或许还将颠覆软件行业&#xff0c;引领自输入命令到点击图标以来的最大计算机革命。 在数字化和技术创新的浪潮中&#xff0c;AI Agent作为一种前沿技术&#xff0c;正开启…

GB28181 —— 5、C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)

被测试的USB摄像头 效果 源码说明 主要功能模拟设备端&#xff0c;完成注册、注销、心跳等&#xff0c;同时当服务端下发指令播放视频时 设备端实时读取USB摄像头视频并通过OpenCV处理后实时转ps格式后封包rtp进行推送给服务端播放。 源码 /****remark: pes头的封装,里面的具…

【教程】rax3000m emmc刷机 支持硬件QOS MT7981到底值不值

为什么选择rax3000m&#xff1f; 1、恩山论坛237大佬放出了硬件QOS功能&#xff0c;而很多几百元路由器一旦开启QOS就会变软件NAT走CPU转发&#xff0c;效果还不如x86软路由。这样就非常适合刷机&#xff0c;在家里跑pt、迅雷等任务时候不会卡顿&#xff0c;实测&#xff0c;丢…

【Leetcode】1969. 数组元素的最小非零乘积

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 给你一个正整数 p 。你有一个下标从 1 1 1 开始的数组 n u m s nums nums &#xff0c;这个数组包含范围 [ 1 , 2 p − 1 ] [1, 2^p - 1] [1,2p−1] 内所有整数的二进制形式&…

【python-sc2】详细解析!!!手把手教你学会实现星际争霸2游戏AI智能体的基础知识!!!

参考资料 星际争霸2 AI机器人网站 AI天梯 sc2ai_wiki文档 该网站包含基于各种语言编写的sc2库&#xff0c;包括C、Python、C#、JAVA等。其中&#xff0c;Python有Python-sc2、sharpy-sc2和PySC2三种框架。此外&#xff0c;针对每个框架提供了教程。 python-sc2官方文档 各种族单…

Spring Cloud Gateway教程

1 微服务网关概述 Spring Cloud Gateway是在 Spring 生态系统之上构建的API网关服务&#xff0c;旨在为微服务架构应用提供一种简单有效的统一的API路由管理方式。 Spring Cloud Gateway主要功能&#xff1a; 反向代理认证鉴权流量控制熔断日志监控 2 Spring Cloud Gateway三…