SpringCloud——EureKa

目录

1.前言

1.微服务拆分及远程调用

3.EureKa注册中心

远程调用的问题

eureka原理

搭建EureKaServer

服务注册

服务发现


1.前言

分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为服务。

优点:

  • 降低服务耦合
  • 有利于服务升级和扩展

微服务:是一种经过良好架构设计的分布式架构方案,微服务架构特征

  • 单一职责:微服务拆分粒度更小,每个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
  • 面向服务:微服务对外暴露业务接口
  • 自治:团队独立,技术独立,数据独立,部署独立
  • 隔离性强:服务调用做好隔离,容错,降级,避免出现级联问题

微服务技术对比:

SpringCloud

SpringCloud是目前国内使用最广泛的微服务框架。

SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验:

1.微服务拆分及远程调用

微服务拆分注意事项

  • 1.不同微服务,不要重复开发相同业务
  • 2.微服务数据独立,不要访问其它微服务的数据库
  • 3.微服务可以将自己的业务暴露为接口,供其他微服务调用

案列:

需求:根据订单id查询订单的同时,把订单所属的用户信息一起返回

远程调用方式分析:

1)注册RestTemplate

在order-service的OrderApplication中注册RestTemplate

要想实现一次跨服务的调用其实就是发送一次http请求

提供者和消费者:

服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)
服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)

3.EureKa注册中心

远程调用的问题

硬编码问题

eureka原理

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

EureKaServer:服务端,注册中心

记录服务信息

心跳监控

EurekaClient:客户端

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

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

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

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

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

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

搭建EureKaServer

搭建EureKaServer服务步骤如下:

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

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

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

服务注册

将user-service服务注册到EurekaServer步骤如下:

1.在user-service项目中引入spring-cloud-starter-netflix-eureka-client的依赖

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

如果我们想启动多个实例,模拟多实例部署,但为了避免端口冲突,需要修改端口设置:

服务发现

服务拉取是基于服务名称获取服务列表,然后在对服务列表做负载均衡

1.修改OrderService的代码,修改访问url路径,用服务名代替ip,端口:

2.在order-service项目的启动类OrderApplication中的RestTemplate添加负载均衡注解:

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

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

相关文章

机顶盒刷机笔记

疑难杂症解决 hitool线刷网口不通tftp超时--》关闭防火墙cm201-2卡刷所有包提示失败abort install--》找个卡刷包只刷fastboot分区再卡刷就能通过了(cm201救砖包 (M8273版子)) 刷机工具 海兔烧录工具HiTool-STB-5.3.12工具,需要…

Linux动静态库制作与原理

什么是库 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统…

如何通过小智AI制作会说话的机器人玩具?

一、硬件准备与组装 1. 核心硬件选择 主控芯片:选择支持无线网络连接、音频处理和可编程接口的嵌入式开发板 音频模块:配备拾音麦克风与小型扬声器,确保语音输入/输出功能 显示模块:选择适配的交互显示屏用于可视化反馈 扩展模…

如何控制邮件发送频率避免打扰用户

一、用户行为 监测用户与邮件的互动数据,如打开率、点击率下滑或退订申请增多,可能是发送频率过高的警示信号。利用邮件营销平台的分析工具,识别这些指标的变动趋势,为调整提供依据。 二、行业特性与受众差异 不同行业用户对邮…

定积分的“偶倍奇零”性质及其使用条件

定积分的“偶倍奇零”性质是针对对称区间上的奇偶函数积分的重要简化方法。以下是其核心内容和应用要点: ​一、基本性质 ​偶函数(偶倍)​ 若 f(x) 在 [−a,a] 上为偶函数(即 f(−x)f(x)),则: …

如何在 Windows 11 或 10 上安装 Fliqlo 时钟屏保

了解如何在 Windows 11 或 10 上安装 Fliqlo,为您的 PC 或笔记本电脑屏幕添加一个翻转时钟屏保以显示时间。 Fliqlo 是一款适用于 Windows 和 macOS 平台的免费时钟屏保。它也适用于移动设备,但仅限于 iPhone 和 iPad。Fliqlo 的主要功能是在用户不活动时在 PC 或笔记本电脑…

【C/C++】C++并发编程:std::async与std::thread深度对比

文章目录 C并发编程:std::async与std::thread深度对比1 核心设计目的以及区别2 详细对比分析3 代码对比示例4 适用场景建议5 总结 C并发编程:std::async与std::thread深度对比 在 C 中,std::async 和 std::thread 都是用于并发编程的工具&am…

Axure疑难杂症:垂直菜单展开与收回(4大核心问题与专家级解决方案)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:垂直菜单展开与收回 主要内容:超长菜单实现、展开与收回bug解释、Axure9版本限制等问题解…

ASIC和FPGA,到底应该选择哪个?

ASIC和FPGA各有优缺点。 ASIC针对特定需求,具有高性能、低功耗和低成本(在大规模量产时);但设计周期长、成本高、风险大。FPGA则适合快速原型验证和中小批量应用,开发周期短,灵活性高,适合初创企…

DAY 30 模块和库的导入

知识点回顾: 1.导入官方库的三种手段 2.导入自定义库/模块的方式 3.导入库/模块的核心逻辑:找到根目录(python解释器的目录和终端的目录不一致) 作业:自己新建几个不同路径文件尝试下如何导入 import math # 导入…

MyBatis:动态SQL

文章目录 动态SQLif标签trim标签where标签set标签foreach标签include标签和sql标签 Mybatis动态SQL的官方文档: https://mybatis.net.cn/dynamic-sql.html 动态SQL 动态SQL是 MyBatis的强大特性之一,如果是使用JDBC根据不同条件拼接sql很麻烦,例如拼接…

Java - Junit框架

单元测试:针对最小的功能单元(方法),编写测试代码对该功能进行正确性测试。 Junit:Java语言实现的单元测试框架,很多开发工具已经集成了Junit框架,如IDEA。 优点 编写的测试代码很灵活,可以指某个测试方法…

学生成绩管理系统Java实战(Spring Boot+MyBatis Plus)

文章目录 一、系统需求分析(避坑指南)二、技术选型(2024新版)三、数据库设计(三大核心表)1. 学生表(student)2. 课程表(course)3. 成绩表(score&a…

MySQL安装实战指南:Mac、Windows与Docker全平台详解

MySQL作为世界上最流行的开源关系型数据库,是每位开发者必须掌握的基础技能。本指南将手把手带你完成三大平台的MySQL安装,从下载到配置,每个步骤都配有详细说明和截图,特别适合新手学习。 一、Mac系统安装MySQL 1.1 通过Homebre…

多模态大语言模型arxiv论文略读(七十九)

AIM: Let Any Multi-modal Large Language Models Embrace Efficient In-Context Learning ➡️ 论文标题:AIM: Let Any Multi-modal Large Language Models Embrace Efficient In-Context Learning ➡️ 论文作者:Jun Gao, Qian Qiao, Ziqiang Cao, Zi…

[Harmony]封装一个可视化的数据持久化工具

1.添加权限 在module.json5文件中添加权限 // 声明应用需要请求的权限列表 "requestPermissions": [{"name": "ohos.permission.DISTRIBUTED_DATASYNC", // 权限名称:分布式数据同步权限"reason": "$string:distrib…

利用html制作简历网页和求职信息网页

前言 大家好,我是maybe。今天下午初步学习了html的基础知识。做了两个小网页,一个网页是简历网页,一个网页是求职信息填写网页。跟大家分享一波~ 说明:我不打算上传图片。所以如果有朋友按照我的代码运行网页,会出现一个没有图片…

Vue 3 实现后端 Excel 文件流导出功能(Blob 下载详解)

💡 本文以告警信息导出为例,介绍 Vue 3 中如何通过 Axios 调用后端接口并处理文件流,实现 Excel 自动下载功能。 📑 目录 一、前言 二、后端接口说明 三、前端实现思路 四、导出功能完整代码 五、常见问题处理 六、效果展示 …

HarmonyOS AVPlayer 音频播放器

鸿蒙文档中心:使用AVPlayer播放视频(ArkTS)文档中心https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/video-playback 这张图描述的是 HarmonyOS AVPlayer 音频播放器的状态流转过程,展示了 AVPlayer 在不同状态之间的切换条件和关键操作…

Java面试场景:从音视频到AI应用的技术探讨

面试场景:音视频与AI应用技术的碰撞 在某互联网大厂的面试中,面试官王先生与求职者明哥展开了一场关于音视频技术与AI应用的对话。 第一轮提问:音视频场景 面试官:明哥,你能谈谈在音视频场景中,Spring B…