微服务相关组件学习笔记

黑马商城项目—最新SpringCloud开发实战—功能实现详细学习笔记(微服务篇) 服务拆分后会遇到2个问题:1,服务地址有很多且将来可能发生变化,前端无法确定请求的服务地址端口2,每个服务都需要登录的用户信息,如果每个服务都去登录不仅复杂而且可能泄露密钥以上问题可以用网关解决前端只需要去请求网关,然后就可以访问到对应的微服务,包括3个功能,网关还有一些优点:网关可以避免微服务地址暴露给前端,也是一种对微服务的保护,对于前端来说,网关的作用将后端的微服务架构变成了单体架构(前端将整个后端视为黑盒首先微服务启动后在注册中心进行注册,然后网关会去拉取服务列表, 阅读详情

介绍

微服务是一种软件架构风格,它是以专注于单一职责的很多小型项目为基础,组合出复杂的大型应用。

Mybatis-plus

image-20240628193027525

常见注解

image-20240628220746303

image-20240628221335991

常见配置

image-20240628222302893

核心功能

条件构造器

image-20240628230418368

image-20240628230438532

lamda

image-20240628230606799

image-20240628230632897

Service接口

image-20240703215915939

image-20240703225223158

批量新增

image-20240705153600643

Docker

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可抑制的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙盒机制,相互之间不会存在任何接口。几乎没有性能开销,可以很容易的在机器和数据中心运行。最重要的是,他们不依赖于任何语言、框架或者包装系统。

image-20240708204025035

命令解读

image-20240708211957733

image-20240708212628927

数据卷

容器内修改文件不方便

image-20240709221357362

image-20240709222932447

image-20240710092429183

自定义镜像

image-20240710175330358

image-20240710181412464

Dockerfile

image-20240710184930500

image-20240710185141915

image-20240710185317360

容器网络互联

image-20240710192240085

image-20240710192300277

DockerComposee

项目一键部署

image-20240710221320430

常用命令总结(面试)

docker ps:查看docker容器(运行之后查看是否运行成功),用于查看正在运行的容器。
docker images:于查看本地Docker服务器上的所有可用镜像。
docker logs -f 【容器名字】:查看运行日志

微服务

单体架构

高并发测试工具Jmeter

image-20240711205045481

微服务架构

代价:各个服务的关系复杂化

image-20240711205758375

SpringCloud(商城相关模块)

image-20240711210521286

拆分

image-20240711213758268

改端口号
改数据库
调试文档的接口
导入相对应的代码controller、service、mapper、domain

远程调用

一个微服务(购物车)需要商品条目的数据,因为数据库不是同一个则可以通过远程调用进行数据传输

image-20240712140010943

image-20240712140730472

@RequiredArgsConstructor注解作用

与@AllargsConstruct不同,@RequiredArgsConstructor注解只会对final声明的成员函数进行构造.

image-20240712140344369

总结

image-20240712140926451

Note:需要改进RestTemplate

存在的问题

image-20240712141134690

注册中心原理

image-20240712141953320

image-20240712142101435

服务注册(nacos)

docker下载镜像

image-20240712142824054

image-20240712143503172

服务发现

image-20240712145548931

OpenFeign(简化http请求)-组件1

image-20240712152210710

image-20240712153311873

连接池

image-20240713202131375

image-20240713202139729

最佳实践

方案1

image-20240713203724697

方案2

image-20240713204136636

依赖导入,之后重新导包

仍需要注入bean并且能扫描到:

image-20240713204307798

日志

image-20240713204753848

image-20240713205102853

组件2-网关

image-20240713210359867

入门

image-20240713211512464

路由属性

image-20240718181204371

image-20240718181217759

网关请求处理流程

image-20240718215626279

登录校验要在校验之前

image-20240718215958746

如何自定义过滤器(GlobalFilter)

image-20240718222003857

image-20240718222031513

GateAwayFilter:一般都使用GlobalFilter就够了,有对应需求时再看

具体实现:登录校验

image-20240719172117121

image-20240719172203096

image-20240719172212261

网关传递微服务(解决上述传递用户部分)

image-20240719172705555

相关代码

image-20240719173230389

步骤

image-20240719173429011

配置其他配置类时,对MVC的配置类加载不需要在网关微服务模块。

需要加@ConditionalOnClass(DispatcherServlet.class)进行条件筛选

网关->过滤器(获取信息)->拦截器(提取信息)->服务

OpenFeign传递用户(用户间的微服务传递)

image-20240721150014631
在这里插入图片描述

在这里插入图片描述

image-20240721151318885

交易的微服务要想实现这个须在启动类上加上这个类

image-20240721151408951

image-20240721151449346

实现微服务间传递用户信息:

image-20240721151626580

总回顾(微服务登录解决 方案 )

image-20240721151825378

组件3-配置管理(Nacos)

存在的问题

重复配置过多

image-20240713214436252

配置共享

image-20240713214943009

image-20240713215141117

image-20240713215150788

image-20240713215204717

配置热更新

image-20240730105620151

动态路由

image-20240801180314221

image-20240801182358563

@PostConstruct

在bean初始化之后执行

@RequiredArgsConstructor和@Autowired

@RequiredArgsConstructor是Lombok的一个注解,简化了我们对@Autowired书写,我们在写Controller层或者Service层的时候,总是需要注入很多mapper接口或者service接口,如果每个接口都写上@Autowired,这样看起来就会很繁琐,@RequiredArgsConstructor注解可以代替@Autowired注解注意点。

注:

1、声明的变量必须加上final修饰

2、基于构造方法为属性赋值,容器通过调用类的构造方法将其进行依赖注入

@AllArgsConstructor和@RequiredArgsConstructor都可以用来替代@Autowired写法,区别在于@RequiredArgsConstructor必须要有final修饰,如果有@Value注解,@RequiredArgsConstructor修饰可以成功注入,@AllArgsConstructor修饰会注入失败

微服务问题和原因

雪崩问题

image-20240801183832396

image-20240803222501989

解决方案

服务保护方案-请求限流

image-20240803222633147

服务保护方案 - 线程隔离

image-20240803222916393

服务保护方案-服务熔断

image-20240803230207394

服务保护技术

image-20240803230418529

结论

image-20240803230253632

服务保护技术-Sentinel

image-20240803230657947

使用步骤

image-20240803231034602

image-20240803231239017

其中的Endpoint就是Controller层的接口

为区分多个接口,需要额外配置来将:请求路径+请求方式

image-20240803231618907

请求限流(使用Jmeter进行多线程并发访问测试)

image-20240804163121056

image-20240804163508987

线程隔离

image-20240808162308716

image-20240808162334337

Fallback

image-20240808164248169

image-20240808164329070

image-20240808163226793

image-20240808163342128

服务熔断

image-20240808164401040

image-20240808164734858

image-20240808164907908

分布式事务

image-20240808165540769

RabbitMQ(异步通信组件)

image-20240713222723151

image-20240713222825248

同步调用

image-20240713223533492

异步调用

image-20240713224254182

image-20240713224306170

broker:消息代理

MQ技术选型

image-20240713225008284

RabbitMQ

在这里插入图片描述

image-20240713230007101

注意事项

image-20240713230956429

数据隔离

通过隔离不同用户,实现数据的隔离。

每个用户只能操作和访问自己虚拟主机的数据和消息。

java客户端(使用java实现MQ)

spring AMQP

在这里插入图片描述### 步骤
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

接受消息(@RabbitListener)

在这里插入图片描述

总结

在这里插入图片描述

Work Queues模型

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

Fanout交换机

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

Direct交换机

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Topic交换机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于Bean声明队列交换机

在这里插入图片描述
在这里插入图片描述

基于注解声明队列交换机

解决基于Bean声明队列交换机绑定Key臃肿的问题。
在这里插入图片描述

消息转换器

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

基于MQ的业务改造

为了让springboot能扫描到相关配置类
在这里插入图片描述

在这里插入图片描述

消息可靠性

发送者可靠性

发送者重连

在这里插入图片描述

发送者确认

在这里插入图片描述

MQ可靠性

在这里插入图片描述

数据持久化

在这里插入图片描述

Lazy Queue

a
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

消费者可靠性

消费者确认机制

在这里插入图片描述在这里插入图片描述

失败重试机制

在这里插入图片描述在这里插入图片描述

业务幂等性

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

延迟消息(兜底方案)

在这里插入图片描述#### 死信交换机

在这里插入图片描述

延迟消息插件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

延迟消息–取消超时订单

在这里插入图片描述
在这里插入图片描述

SpringCloud溯源——从单体架构到微服务Microservices架构 & 分布式和微服务 & 为啥要用微服务_springcloud单体项目转微服务 1.分布式系统一定是由多个节点组成的系统。其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。2.这些连通的节点上部署了我们的节点,并且相互的操作会有协同。分布式系统对于用户而言,他们面对的就是一个服务器,提供用户需要的服务而已,而实际上这些服务是通过背后的众多服务器组成的一个分布式系统,因此分布式系统看起来像是一个超级计算机一样。 阅读详情

相关推荐

如何优雅地进行频谱分析—— 一行代码实现绘制MATLAB频谱、功率谱图

之前的文章里讲了关于信号频谱、能量谱的相关理论和MATLAB编程实现方法: Mr.看海:信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析) Mr.看海:频域特征值提取的MATLAB代码实现(频谱、功率谱、倒频谱) 不过对于刚刚开始进行这方面研究,或者对MATLAB不甚熟悉,抑或者不想花太多时间用在编程这件事上的同学,目前缺少一种足够便捷、高效、可靠的代码。 所以笔者想做这样一件事:编写一个函数,同学们只需要导入自己要分析的数据,并按照自己的需求设置部分选项,调用一行代码就可以实现绘制频

fengzhuqiaoqiu的博客 2万+

微服务 常用组件(常用大全)

微服务常用组件简介

tszc95的博客 4405

WorkBuddy 实战:从聊天窗口到 AI 工作台,打造个人自动化助理

大模型时代,对话式 AI 常被当作高级搜索框,难以沉淀为生产力。其根源在于上下文断裂——每次对话都从零开始。AI Agent 的核心原理是通过状态保持、工具调用与流程复用,将临时交互固化为可重复的协作机制。WorkBuddy 作为个人 AI 工作台,以 Agent + Skill + 工作流架构解决该问题:Skill 封装操作手册,工作区沉淀知识上下文,自定义指令约束输出风格。这种设计让周报生成、会议纪要、文档初稿、专利检索辅助等重复劳动实现流程化自动产出。掌握 WorkBuddy 怎么用,关键在于从自己重

weixin_33834910的博客 325

Spring Cloud Alibaba的微服务组件学习,一文带你学会

下面是Spring Cloud 官方对Spring Cloud Alibaba的介绍:Spring Cloud Alibaba旨在为微服务开发提供一站式解决方案。该项目包括开发分布式应用程序和服务所需的组件,以便开发人员可以使用Spring Cloud编程模型轻松开发分布式应用程序。使用Spring Cloud Alibaba,您只需要添加一些注释和配置,就可以为您的应用程序使用Alibaba的分布式解决方案,并使用Alibaba中间件构建自己的分布式系统。

Libigtong的博客 4360

CVPR2021 CenterPoint源码解读:从VoxelNet到两阶段优化的完整实现细节

本文深度解析了CVPR 2021 CenterPoint模型的完整实现细节,从VoxelNet体素化、稀疏卷积Backbone,到基于中心点的检测头与两阶段精修机制。文章提供了从环境搭建、数据预处理到核心代码模块(如热力图生成、关键点特征提取与MLP Refiner)的实战指南,并分享了训练策略、多任务损失调优及可视化调试等关键工程实践,助力开发者深入理解并复现这一高效的3D目标检测框架。

linux的博客 468

电驱系统功率级“多合一”解决方案

如何提升电驱动系统的产品性能、减小能耗和进一步轻量化,以加强整车市场竞争力,是摆在国内外新能源车企面前的共同课题。为此,具有多年动力总成电子系统开发经验的美国著名半导体及电子解决方案专家——德州仪器(Texas Instrument)提出了多种功率级别“多合一”整合方案和设计思路,助力新能源车企提升技术优势。

yessunday的专栏 1370

微服务组件

服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客户端可以为不同的目的重用(例如通过跨进程的网络调用)。Nacos 支持主流的服务生态,如 Kubernetes Service、gRPC|Dubbo RPC Service 或者 Spring Cloud RESTful Service.服务注册中心,它是服务,其实例及元数据的数据库。服务实例在启动时注册到服务注册表,并在关闭时注销。服务和路由器的客户端查询服务注册表以查找服务的可用实例。

weixin_59839012的博客 1654

深入URP之Shader篇5: SimpleLit Shader分析(1)

本篇开始分析simple lit shader。我们通过分析unlit shader了解了URP shader的结构,以及一些基础功能。而simple lit shader包含了更多的内容。本篇开始,就不会特别仔细的逐行去分析shader文件了,只会针对pass的功能中比较有意思且之前没看到过的内容进行分析。名字为的pass,它的Tags为: 根据URP的文档:说明这是一个前向渲染路径的pass,虽然URP(至少是10.8.1版本)还没有正式支持Deferred Rendering,但URP已经为它打了很多

聚焦游戏和图形引擎开发技术 1901

【微服务】微服务常用组件汇总

Spring Cloud Gateway 是Spring Cloud 的一个全新的API网关项目,目的是为了替换掉Zuul1,它基于Spring5.0 + SpringBoot2.0 + WebFlux(基于⾼性能的Reactor模式响应式通信框架Netty,异步⾮阻塞模型)等技术开发,性能⾼于Zuul,官⽅测试,Spring Cloud GateWay是Zuul的1.6倍,旨在为微服务架构提供⼀种简单有效的统⼀的API路由管理⽅式。Consul提供服务发现、基于身份的授权、L7流量管理和服务对服务加密。

No8g攻城狮的博客 7038

调节桌面图标大小的方法(编程)

如果你对其他操作系统或编程语言有类似的需求,可以根据具体的情况进行相应的调整和搜索相关的库和方法。在编程中,我们可以使用各种桌面应用程序来调节桌面图标的大小。库提供的函数,我们获取了桌面图标的窗口句柄,并使用Windows消息发送方式设置图标的大小。你可以根据自己的需求修改代码中的图标大小值,并在运行代码后观察桌面图标的变化。函数并传入所需的图标大小,这里设置为48x48像素。首先,我们需要使用Python的第三现的方法。首先,我们需要使用Python的第三方库。首先,我们需要使用实现的方法。

CyberFlare的博客 437

Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】

本文章是Unity零基础到入门专栏的系列文章。 适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习! 本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON

努力前行,总会成为自己心中的那道光 8万+

微服务的常用组件

SpringCloudConfig、Nacos、Apollo(阿波罗)配置中心。

青云的博客 3042

具身智能机器人算法控制研究进展综述

具身智能(Embodied Intelligence)作为人工智能与机器人学的交叉前沿领域,强调智能体通过物理身体与环境的持续交互涌现智能行为。近年来,随着基础模型(Foundation Models)、扩散策略(Diffusion Policy)、视觉-语言-动作(Vision-Language-Action, VLA)模型以及大规模机器人数据集(如Open X-Embodiment)的快速发展,具身智能机器人的算法控制范式正经历深刻变革。

VectorShift的博客 225

Java学习笔记——第四章 微服务篇

Java学习笔记

朝闻道 854

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

微服务学习笔记

P(partition tolerance)分区容错性:出现分区时(某些节点之间因网络问题断开形成不同群体)依然可以对外提供服务。BA(basically Available)基本可用:故障时允许部分不可用但要保障基础核心功能可用。E(Eventually Consistent)最终一致:保证数据在软状态结束后一致。S(Soft State)软状态:在一定时间内允许出现数据不一致的状态。A(availability)可用性:任意节点可用可访问。C(consistency)一致性:任意节点数据一致。

Hardway_King的博客 739

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Spring Cloud学习笔记

https://springcloud.cc/spring-cloud-dalston.html SpringCloud简介与5大常用组件 Spring Cloud 从入门到精通 拜托!面试不要再问我Spring Cloud底层原理 Spring Cloud 微服务架构学习笔记与示例 ...

xie__jin__cheng的博客 179

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Spring Cloud微服务技术栈学习(导读)

目录标题前言一、Nacos(阿里)1、学习笔记2、相关文档3、安装教程二、Ribbon(阿里)1、学习笔记2、相关文档 前言 记录Spring Cloud微服务技术栈相关知识。 spring cloud alibaba与spring cloud netflix分别是两家公司(阿里和Netflix)对微服务系系列技术栈的两种实现方式。 一、Nacos(阿里) 1、学习笔记 微服务架构介绍 01 Alibaba微服务组件Nacos注册中心实战 代码位置:D:\A-MyFileSpace\MyIdeaSpac

qq_43783527的博客 1304

京东三面惨遭被虐,关于redis,高并发,分布式,微服务一窍不通

三面大概九十分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了(呜呜呜~)。回来之后把这些题目做了一个分类并整理出答案(强迫症的我~狂补知识~)分为redis缓存,高并发,分布式,微服务等,接下来分享一下我的这京东面试的面经+一些我的学习笔记。 面试真题解析 自从在京东碰壁之后,花了一个月的时间学习梳理了这些知识点,准备来日再战,除了高并发,分布式,微服务之外,还整理了有java基础,微服务,Kafka等知识点的笔记。以及1500道大厂面试题的整理。面试整体以及思维导图获取方式:

m0_74931226的博客 263

已膜拜,GitHub大佬的微服务资源库太强了,每份学习手册都优质详细

在面试的时候,项目考题的重要性不言而喻。分布式和微服务则是在项目考察中难以越过的点。以一个项目的初期到成熟期为例,循序渐进深入到分布式系统中,层层递进剥开项目的本质,并且还要具备围绕这个本质去深度思考的能力。而微服务则是基于分而治之的思想演化,随着互联网发展,传统的系统已经很难满足市场对技术的需求,微服务架构应运而生,也一跃成为 IT 领域热门话题。大量一线互联网公司的庞大业务体量和业务需求,使得企业纷纷投入了微服务架构的建设中。

公众号:该用户快成仙了 209

【Spring Cloud 】Spring Cloud 学习笔记(上篇)

通过修改idea的workspace.xml的方式来快速打开Run Dashboard窗口(这个用来显示哪些Spring Boot工程运行,停止等信息。我idea 2020.1版本在名为Services窗口就可以显示哪些Spring Boot工程运行,停止等信息出来,所以这仅作记录参考)。

jrhggg的博客 947

探索微服务架构的宝库:microservices-patterns 项目推荐

探索微服务架构的宝库:microservices-patterns 项目推荐 项目介绍 microservices-patterns 是一个开源项目,旨在为开发者提供一个全面的微服务架构实践指南。该项目不仅包含了 Chris Richardson 所著的《Microservices Patterns》一书的源代码,还整合了 Eventuate Tram 框架的个人学习笔记,为 Spring Boo...

gitblog_00093的博客 1864

Microservices-with-Go:构建高可用微服务架构

Microservices-with-Go:构建高可用微服务架构 项目介绍 Microservices-with-Go 是一本由 Packt Publishing 出版的书籍的代码仓库,旨在帮助开发者利用 Go 语言构建可扩展和可靠的微服务架构。本书深入浅出地介绍了微服务开发中的最佳实践和解决方案,通过实践案例让读者更好地理解和掌握微服务的关键技术。 项目技术分析 本书涵盖了微服务开发中的多个关键...

gitblog_00763的博客 1425

探索微服务构建实践:Building Microservices 教程

探索微服务构建实践:Building Microservices 教程 在现代软件开发领域,微服务架构已经成为一个热门话题,它让复杂的应用程序变得模块化、可扩展且易于管理。GitCode上的building-microservices项目提供了一个全面的教程,引领你逐步探索如何使用Spring Boot和相关技术栈构建微服务。 项目简介 building-microservices是一系列视频课程...

gitblog_00094的博客 1330
上一篇: JAVA-WEB学习笔记(包含基本组件)
下一篇: 【计算机面试整理3】学习中可能没学到的知识点
ICE·BING
博客等级 码龄7年 148粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值