SpringCloud实用篇(一)

1.SpringCloud

  • SpringCloud是目前国内使用最广泛的微服务框架。官网地址:Spring Cloud

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

image-20240328195254718

  • SpringCloud与SpringBoot的版本兼任关系如下:

image-20240328195323436

2.服务拆分及远程调用

拆分注意事项

1.不同微服务,不要重复开发相同业务

2.微服务数据独立,不要访问其他微服务的数据库

3.微服务可以将自己的业务接口暴露为接口,供其他微服务调用

导入服务拆分Demo

1.导入课前资料提供的工程:cloud-demo

链接:百度网盘 请输入提取码 提取码:ksw1 2.项目结构

image-20240328195655304

3.将课前资料准备的sql导入数据库

链接:百度网盘 请输入提取码 提取码:ksw1

总结

1.微服务需要根据业务模块拆分,做到单一职责,不要重复开发相同业务

2.微服务可以将业务暴露为接口,供其他微服务使用

3.不同微服务都应该有自己独立的数据库

3.服务拆分-服务远程调用

使用远程调用方式查询到用户信息

image-20240328195926030

可以使用RestTemplate发送请求, RestTemplate 是发送各种HTTP请求,那么就可以使用 RestTemplate 发起远程http请求:

在order_service 模块中的启动配置类中:

    /*** 在启动配置类注入 RestTemplate bean容器* @return*/@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}

修改查询实现方法:

@Autowiredprivate RestTemplate restTemplate;
​public Order queryOrderById(Long orderId) {// 1.查询订单Order order = orderMapper.findById(orderId);// 2利用RestTemplate发送Http请求,查询用户// 2.1 url的地址为user-service模块启动的端口,因为是向user-service发送请求String url = "http://localhost:8081/user/" + order.getUserId();// 发送请求,完成远程调用User user = restTemplate.getForObject(url, User.class);// 封装userorder.setUser(user);// 4.返回return order;}
}

4.Eureka

4.1.eureka-消费者与提供者

提供者:一次业务中,被其他微服务调用的服务 (提供接口给其他微服务,接口被调用了)

消费者:一次业务中,调用其他微服务的服务(调用其他微服务提供的接口,调用别人的接口)

上面的demo中,user就是服务提供者(接口被调用),order就是服务消费者(调用了别人的接口)

image-20240328200131872

思考:服务A调用服务B,服务B调用服务C,那么服务B是什么角色?

主要是要看怎么调用

  1. 如果是服务B调用了服务C,那么服务B就是服务消费者

2.如果是服务B被服务A调用了,那么服务B就是服务提供者

总结

服务调用关系

image-20240328200257184

  • 服务提供者:暴露接口给其它微服务调用

  • 服务消费者:调用其它微服务提供的接口

  • 提供者与消费者角色其实是相对

  • 一个服务可以同时是服务提供者和服务消费者

4.2.eureka原理分析

调用出现的问题:

  1. 服务消费者该如何获取服务提供者的地址信息?

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

  3. 消费者如何得知服务者的健康状态?

image-20240328200453699

4.2.1Eureka的作用

image-20240328200528201

再来回答上面第一部分的遗留问题:

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

  • 服务提供者启动时向eureka注册自己的信息

  • eureka保存这些信息

  • 消费者根据服务名称向eureka拉取提供者信息

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

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

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

  • 服务提供者会每隔30秒向EurekaServer发送心跳请求,报告健康状态

  • eureka会更新记录服务列表信息,心跳不正常会被剔除

  • 消费者就可以拉取到最新的信息

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

1.EurekaServer:服务端,注册中心

  • 记录服务信息

  • 心跳监控

2.EurekaClient:客户端

Provider:服务提供者,例如案例中的 user-service

  • 注册自己的信息到EurekaServer

  • 每隔30秒向EurekaServer发送心跳

consumer:服务消费者,例如案例中的 order-service

  • 根据服务名称从EurekaServer拉取服务列表

  • 基于服务列表做负载均衡,选中一个微服务后发起远程调用

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

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

相关文章

Win10环境下使用Ollama搭建本地AI

前言: 1、Ollama需要安装0.1.27版本,高于这个版本在执行Ollama run 指令时会频繁触发一些奇奇怪怪的问题。 2、4.3篇章是重点,若你需要使用web访问的话,莫要忘记! 3、本文章适合新手。 4、篇章5中会介绍如何在vscode中…

探索PLC远程监控的未来:节约成本与提高效率的双赢之道

描述:随着工业自动化技术的飞速发展,PLC远程监控及程序上下载功能成为了行业的新宠,为企业节约成本,减少人员出差带来了革命性的改变。本文深入探讨了这一变革给自动化公司、客户和工程师带来的好处,以及谁是最大的受益…

基于TSINGSEE青犀AI视频智能分析技术的山区林区烟火检测方案

随着清明节的临近,山区、林区防火迫在眉睫,TSINGSEE青犀AI智能分析网关V4烟火检测算法利用物联网、人工智能、图像识别技术,有效监测和管理烟火活动,并在火灾发生的同时发出告警,通知护林员与管理人员。 将山区林区的视…

Leetcode 第 126 场双周赛题解

Leetcode 第 126 场双周赛题解 Leetcode 第 126 场双周赛题解题目1:3079. 求出加密整数的和思路代码复杂度分析 题目2:3080. 执行操作标记数组中的元素思路代码复杂度分析 题目3:3081. 替换字符串中的问号使分数最小思路代码复杂度分析 题目4…

[LeetCode]516. 最长回文子序列[记忆化搜索解法详解]

最长回文子序列 LeetCode 原题链接 题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1&#xff1a…

Day46:WEB攻防-注入工具SQLMAPTamper编写指纹修改高权限操作目录架构

目录 数据猜解-库表列数据&字典 权限操作-文件&命令&交互式 提交方法-POST&HEAD&JSON 绕过模块-Tamper脚本-使用&开发 分析拓展-代理&调试&指纹&风险&等级 知识点: 1、注入工具-SQLMAP-常规猜解&字典配置 2、注入…

【有芯职说】数字芯片BES工程师

一、 数字芯片BES工程师简介 今天来聊聊数字芯片BES工程师,其中BES是Back End Support的缩写,就是后端支持的意思。其实这个岗位是数字IC前端设计和数字IC后端设计之间的一座桥,完成从寄存器传输级设计到具体工艺的mapping和实现。这个岗位在…

牛客小白月赛89(A,B,C,D,E,F)

比赛链接 官方视频讲解(个人觉得讲的还是不错的) 这把BC偏难,差点就不想做了,对小白杀伤力比较大。后面的题还算正常点。 A 伊甸之花 思路: 发现如果这个序列中最大值不为 k k k,我们可以把序列所有数…

Linux——信号的保存与处理

目录 前言 一、信号的常见概念 1.信号递达 2.信号未决 3.信号阻塞 二、Linux中的递达未决阻塞 三、信号集 四、信号集的处理 1.sig相关函数 2.sigprocmask()函数 3.sigpending()函数 五、信号的处理时机 六、信号处理函数 前言 在之前,我们学习了信号…

学习JavaEE的日子 Day32 线程池

Day32 线程池 1.引入 一个线程完成一项任务所需时间为: 创建线程时间 - Time1线程中执行任务的时间 - Time2销毁线程时间 - Time3 2.为什么需要线程池(重要) 线程池技术正是关注如何缩短或调整Time1和Time3的时间,从而提高程序的性能。项目中可以把Time…

如何使用Windows电脑部署Lychee私有图床网站并实现无公网IP远程管理本地图片

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-MSVdVLkQMnY9Y2HW {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

NB-IOT——浅谈NB-IOT及模块测试

浅谈NB-IOT及模块基本使用测试 介绍什么是NB-IOT?NB-IOT的特点 使用准备基本使用 总结 介绍 什么是NB-IOT? NB-IoT,即窄带物联网(Narrowband Internet of Things),是一种低功耗广域物联网(LPW…

MongoDB Atlas维护指南:常见类型、注意事项与窗口设置

为了给Atlas用户更好的产品体验,MongoDB产品团队会进行定期维护。 本文将会介绍: 常见维护项目种类及频率,注意事项维护期间的影响及建议维护窗口设置说明维护告警设置和邮件通知范例 维护窗口常见项目 定期SSL证书轮换软件升级&#xff…

Golang生成UUID

安装依赖 go get -u github.com/google/uuid示例 函数签名func NewV7() ( UUID ,错误) uid : uuid.NewV7()

Java八股文(数据结构)

Java八股文の数据结构 数据结构 数据结构 请解释以下数据结构的概念:链表、栈、队列和树。 链表是一种线性数据结构,由节点组成,每个节点包含了指向下一个节点的指针; 栈是一种后进先出(LIFO)的数据结构&a…

Mac添加和关闭开机应用

文章目录 mac添加和关闭开机应用添加开机应用删除/查看 mac添加和关闭开机应用 添加开机应用 删除/查看 打开:系统设置–》通用–》登录项–》查看登录时打开列表 选中打开项目,点击“-”符号

华为防火墙配置指引超详细(包含安全配置部分)以USG6320为例

华为防火墙USG6320 华为防火墙USG6320是一款高性能、高可靠的下一代防火墙,适用于中小型企业、分支机构等场景。该防火墙支持多种安全功能,可以有效抵御网络攻击,保护网络安全。 目录 华为防火墙USG6320 1. 初始配置 2. 安全策略配置 3. 防火墙功能配置 4. 高可用性配…

论文笔记:分层问题-图像共注意力问答

整理了2017 Hierarchical Question-Image Co-Attention for Visual Question Answering)论文的阅读笔记 背景模型问题定义模型结构平行共注意力交替共注意力 实验可视化 背景 视觉问答(VQA)的注意力模型在此之前已经有了很多工作,这种模型生成了突出显示…

词令关键词口令直达工具:打开「词令」输入关键词直达口令怎么使用?

词令是一款关键词口令直达工具;使用词令关键词口令直达工具,输入指定的词令关键词直达口令,搜索直达该词令关联的网站、页面、程序、应用、服务或功能等等,实现一键直达目标,避免繁琐的查找点击行为,提高用…

axios发送get请求但参数中有数组导致请求路径多出了“[]“的处理办法

一、情况 使用axios发送get请求携带了数组参数时,请求路径中就会多出[]字符,而在后端也会报错 二、解决办法 1、安装qs 当前项目的命令行中安装 npm install qs2、引入qs库(使用qs库来将参数对象转换为字符串) // 全局 import qs from qs Vue.proto…