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 怎么样配置

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NLP笔记】Transformer

文章目录 基本架构EmbeddingEncoderself-attentionMulti-Attention残差连接LayerNorm DecoderMask&Cross Attention线性层&softmax损失函数 论文链接&#xff1a; Attention Is All You Need 参考文章&#xff1a; 【NLP】《Attention Is All You Need》的阅读笔记 一…

WPF按钮相关

跟着官网敲的按钮相关的内容,还涉及了wpf很多其他的知识 1.创建基本按钮 <Grid><StackPanel HorizontalAlignment"Left"><Button>Button1</Button><Button>Button2</Button><Button>Button3</Button></StackPan…

如何在gitee上fork github上面的项目,并保持同步更新

前言 当看到github上面比较好的项目&#xff0c;想用到自己的项目&#xff0c;又不想仓库别人看&#xff0c;同时网络不好&#xff0c;囊中又羞涩的情况下&#xff0c;怎么办&#xff1f; 可以考虑用gitee来同步更新github上面的项目。 一、在gitee创建私有仓库 新建的是选择…

Windows电脑设置自动关机的教程

前言 说来也是搞笑&#xff1a;朋友跟我诉苦说&#xff0c;他有时候下班忘了关闭电脑&#xff0c;结果经常因为电脑不关机导致被领导扣工资。 说到扣工资这个问题&#xff0c;直接仲裁就好啦&#xff01;哈哈哈&#xff0c;突然又是一波泼天的富贵来临&#xff0c;这必须要接住…

计算方法——数据拟合

1、引入&#xff1a;单变量数据拟合 原先的插值要求给出的数据点要在拟合的函数上&#xff0c;但数据拟合&#xff0c;只需整体“近似”&#xff0c;不强求所有的数据点一致 假设给出数据&#xff1a; 那么 偏差 的定义为&#xff1a; 但是偏差“大小”&#xff0c;最好是用绝…

计算机网络:数据交换方式

计算机网络&#xff1a;数据交换方式 电路交换分组交换报文交换传输对比 本博客介绍计算机之间数据交换的三种方式&#xff0c;分别是电路交换、分组交换以及报文交换。 电路交换 我们首先来看电路交换&#xff0c;在电话问世后不久&#xff0c;人们就发现要让所有的电话机都…

c++类和对象(中)类的6个默认成员函数及const成员函数

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 今日主菜&#xff1a;类和对象 主厨&#xff1a;邪王真眼 所属专栏&#xff1a;c专栏 主厨的主页&#xff1a;Chef‘s blog 前言&#xff1a; 咱们之前也是…

【开发环境搭建篇】IDEA安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

C语言——结构体自定义类型

目录 结构体类型 声明结构体 结构体的特殊声明 创建结构体变量和初始化结构体变量 结构体的自引用 结构体内存对齐 对齐规则 内存对齐存在意义 默认对齐数的修改 结构体传参 结构体实现位段 了解位段是什么 位段的内存分配 位段有跨平台的问题及使用注意事项 C语言…

Spark-Scala语言实战(3)

在之前的文章中&#xff0c;我们学习了如何在来如何在IDEA离线和在线安装Scala&#xff0c;想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实…

[Halcon学习笔记]标定常用的Halcon标定板规格及说明

1、介绍 大多数标定的要求都是以实心圆或方格来作为标志点&#xff0c;所以一般的标定板为棋盘格或矩阵圆点图&#xff0c;高精度的相机标定过程中&#xff0c;大多是以比较明确的特征点来作为参考&#xff0c;所以通过识别标定板的圆形&#xff0c;拟合出精确的中心位置&…

3.19总结

A计划 题解&#xff1a;这题其实就是一个很简单的三维搜索&#xff0c;有了一个传送门&#xff0c;并且要确定是否传过去的对应位置是墙&#xff0c;防止被装死&#xff0c;同事呢又要在对应的t时间内完成&#xff08;不一定要卡着t时间恰好完成&#xff09; #include<ios…

linux单机部署hadoop

1.下载安装包 https://archive.apache.org/dist/hadoop/common/ 2.上传压缩 3.修改配置文件 1)设置JDK的路径 cd /usr/local/software/hadoop-3.1.3/etc/hadoop vi hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64/ 查看…

1Panel应用推荐:Nginx Proxy Manager

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;它致力于通过开源的方式&#xff0c;帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用&#xff0c;1Panel特别开通应用商店&am…

springBoot---过滤器,监听器,拦截器

过滤器&#xff0c;监听器&#xff0c;拦截器 一、理解它们 看里十几篇博客&#xff0c;总算有点小明白&#xff0c;总的来讲&#xff0c;两张图可以让我看明白点。 通过两幅图我们可以理解拦截器和过滤器的特点 1、过滤器 过滤器是在请求进入tomcat容器后&#xff0c;但请求…

2024流星全自动网页生成系统重构版源码

2024流星全自动网页生成系统重构版源码 源码介绍 流星全自动网页生成系统重构版源码分享&#xff0c;所有模板经过精心审核与修改&#xff0c;完美兼容小屏手机大屏手机&#xff0c;以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 为用户使…

【第十五章】改进神经网络学习方式-手写数字识别重新编码实现

让我们来实现我们在之前讨论过的想法。我们将开发一个新的程序&#xff0c;network2.py&#xff0c;这是我们之前开发的程序 network.py 的改进版本。如果你有一段时间没有看过 network.py&#xff0c;那么花几分钟快速阅读之前的讨论可能会有所帮助。它只有 74 行代码&#xf…

44.for语句

目录 一.什么是for语句 二.语法格式 三.举例 四.视频教程 一.什么是for语句 C语言中除了while和do while循环语句&#xff0c;还有for循环语句&#xff0c;所以for语句也是循环语句。 二.语法格式 for&#xff08;表达式1&#xff1b;表达式2&#xff1b;表达式3&#xf…

8.python中的元组

8.python中的元组 虽然说元组用的不是很多&#xff0c;但是还是讲一下。元组其实可以看为是一个列表&#xff0c;不可变的列表。操作和列表都差不多。 元组&#xff08;tuple&#xff09;是Python中的一种基本数据结构类型&#xff0c;它是不可变的序列&#xff0c;意味着一旦…

【爬虫】实战-爬取Boss直聘信息数据

专栏文章索引&#xff1a;爬虫 所用工具&#xff1a; 自动化工具&#xff1a;DrissionPage 目录 一、找到目标数据(2个确定)​ 1.确定目标网页 2.确定目标网址 二、编写代码​ 三、查看数据​ 五、总结 一、找到目标数据(2个确定) 1.确定目标网页 打开目标网站 网站&am…