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/759197.shtml

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

相关文章

测试平台——前端框架

一、创建vue项目 npm init vitelatest web_class wylWYLdeMacBook-Air testplatform % npm init vitelatest web_class ✔ Select a framework: › Vue ✔ Select a variant: › JavaScriptScaffolding project in /Users/wyl/workspace/testplatform/web_class...Done. Now…

IoT 物联网场景中如何应对安全风险?——青创智通

工业物联网解决方案-工业IOT-青创智通 ​随着物联网&#xff08;IoT&#xff09;技术的快速发展&#xff0c;越来越多的设备、系统和应用被连接到互联网上&#xff0c;从而构建了一个庞大的物联网生态系统。然而&#xff0c;这种连接性也带来了前所未有的安全风险。在物联网场景…

Android Studio实现内容丰富的安卓校园公告助手

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 093校园助手 1.开发环境 android stuido3.6 jak1.8 eclipse mysql tomcat 2.功能介绍 具体往下看第三节&#xff0c;功能截图 安卓端&#xff1a; 1.注册登录 2.校园公告列表…

微信小程序执行环境(微信端)与浏览器环境有何不同

微信小程序执行环境与浏览器环境有很多不同之处&#xff0c;以下是一些例子&#xff1a; 全局对象&#xff1a; 浏览器环境中的 JavaScript 有一个全局对象 window&#xff0c;而微信小程序中的 JavaScript 没有 window 对象&#xff0c;取而代之的是 wx 对象&#xff0c;wx …

持续集成平台 02 jenkins plugin 插件

拓展阅读 Devops-01-devops 是什么&#xff1f; Devops-02-Jpom 简而轻的低侵入式在线构建、自动部署、日常运维、项目监控软件 代码质量管理 SonarQube-01-入门介绍 项目管理平台-01-jira 入门介绍 缺陷跟踪管理系统&#xff0c;为针对缺陷管理、任务追踪和项目管理的商业…

系统架构设计师考试-专业英语

词汇含义access存取active-matrix主动矩阵adapter适配器&#xff0c;转换器adapter cards适配卡agents代理analog signals模拟信号animations动画applets程序arithmetic operations算术运算array数组&#xff0c;阵列assembly汇编&#xff0c;安装&#xff0c;装配asynchronous…

C#面:简述 LINQ

C# 中的 LINQ&#xff08;Language Integrated Query&#xff09;是集成查询语言&#xff0c;它允许我们在编写代码时使用类似于 SQL 的查询语法来查询和操作各种数据源&#xff0c;如集合、数据库、XML 等。 LINQ 的主要特点包括&#xff1a; 统一的查询语法&#xff1a;LIN…

【pip 安装pymssql报错】 Failed to build pymssql

在使用pip install pymssql安装pymssql时报如下图的错误&#xff1b; 报错截图 2&#xff09;查找资料说pip<3.0版本 &#xff0c;我也试了&#xff0c;不行。 你们也可以试一试&#xff1a;pip install"pymssql<3.0" 3&#xff09;我的成功方式&#xff1…

全量知识系统 概要设计(SmartChat回复)

以下是根据我给出的 系统概要 “提要和纪要”&#xff0c;SmartChat给出的概要设计。我给出的“提要和纪要”可参考链接&#xff1a; https://blog.csdn.net/ChuanfangChen/article/details/136861822 -------------------------------- 概要设计文档 1. 简介 全量知识系统…

浅谈 电脑和车的对比

https://www.zhihu.com/question/547115488 电脑CPU与汽车发动机有哪些相同点与不同点&#xff1f; - 知乎 就想机械硬盘一样 我们的技术可能达不到 但是我们可以弯道超车 比如长江存储的SSD可以取代 以前的机械硬盘

流畅的 Python 第二版(GPT 重译)(八)

第十五章&#xff1a;关于类型提示的更多内容 我学到了一个痛苦的教训&#xff0c;对于小程序来说&#xff0c;动态类型很棒。对于大型程序&#xff0c;你需要更加纪律严明的方法。如果语言给予你这种纪律&#xff0c;而不是告诉你“嗯&#xff0c;你可以做任何你想做的事情”&…

JavaScript:TypeScript网上笔记总结

文章目录 1:基础类型数值型 number字符串类型 string布尔类型 boolean数组类型 Array元组 Tuple任意类型 anyvoid&#xff1a;与any类型相反&#xff0c;表示没有类型null 、undefined类型never类型枚举类型类型断言类型推论&#xff5c;类型别名 2:接口3:类&#xff08;不咋用…

WordPress Wholesale Market 插件 任意文件读取漏洞复现

0x01 产品简介 WordPress plugin Wholesale Market 是一个woocommerce扩展插件&#xff0c;使您的商店能够创建批发用户&#xff0c;并通过设置产品的批发价格。 0x02 漏洞概述 WordPress plugin Wholesale Market 2.2.1之前版本存在路径遍历漏洞&#xff0c;该漏洞源于没有…

海南省月降水量分布数据

海南省位于中国南端&#xff0c;海南岛地处热带北缘&#xff0c;属热带季风气候&#xff0c;长夏无冬。海南省雨量充沛&#xff0c;年降水量在1000毫米&#xff5e;2600毫米之间&#xff0c;年平均降水量为1639毫米&#xff0c;有明显的多雨季和少雨季。每年的5&#xff5e;10月…

Django资源路径问题

学习过django框架的应该了解后端有static静态文件&#xff0c;media媒体文件&#xff0c;还有一些其他的配置文件&#xff0c;那么在整个web服务中每个区域访问资源的路径有什么区别呢 前端模版中src 一般本地项目的src都是写项目中的相对路径或者根据电脑磁盘的绝对路径 而在…

鸿蒙Harmony应用开发—ArkTS-转场动画(组件内隐式共享元素转场)

geometryTransition用于组件内隐式共享元素转场&#xff0c;在组件显示切换过程中提供平滑过渡效果。通用transition机制提供了opacity、scale等转场动效&#xff0c;geometryTransition通过id绑定in/out组件(in指入场组件、out指出场组件)&#xff0c;使得组件原本独立的trans…

Apache Flink 中 Watermark 机制详解及其核心原理与应用示例

Watermark&#xff08;水印&#xff09;概念 在 Apache Flink 流处理框架中&#xff0c;Watermark 是一个关键的时间概念&#xff0c;用于处理事件时间窗口&#xff08;event-time processing&#xff09;中的乱序事件问题。事件时间是指事件本身携带的时间戳&#xff0c;而非…

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

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

AI趋势(02)感性/理性双视角理解ChatGPT实现原理

说明&#xff1a;本文主要为非AI专业人士更快速了解和理解AI的角度来进行编写。 1 感性理解ChatGPT实现原理 这里用一个有趣的故事来解释 ChatGPT 的实现原理。 想象一座魔法图书馆&#xff0c;里面收藏着无数的书籍&#xff0c;每本书都是关于人类语言的。这座图书馆里有一…

基于Springboot的防疫物资管理信息系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的防疫物资管理信息系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…