springcloud之微服务简介

写在前面

本文看下微服务的基础内容,并对springcloud做一个简单的介绍。

1:为什么需要微服务

记得工作的前五六年,项目基本上都是一个大的单体应用,大家都是在同一个分支开发以及提交代码,如下图是之前一个单体应用的主要模块:
在这里插入图片描述

在实际开发中,有的人负责优化会员模块,有的人负责在支付模块中引入微信支付,有的人负责开发货源发布模块的新功能,大家为了能够早点划水,都用闪电般的速度开发完毕了自己的功能,但是当合并代码的时候问题就出现了,各种代码冲突,然后大量的时间都被浪费在了处理代码冲突上,代码合并完毕之后,就是系统上线了,在上线的过程中经常会出现一个小bug而导致所有代码的回滚,牵连无辜,但又是幸运女神会降临在我们的头上,新功能测试完美通过,没有任何问题。但,这还不完,还需要做回归测试,因为新代码的改动是否会影响到系统的某些核心功能,如注册登录,付费等,这个过程大概是2个小时左右。好了,现在系统成功上线了,又出现了因为某个新功能代码导致了线上的内存泄漏,服务整体不可用了,此时估计就要有人领盒饭了。

记得有一次,我负责开发一个功能,因为对缓存的使用有bug,上线后导致了缓存不可用,进而影响了整体的业务,最终做了整体回滚,修复后重新上线。

综合以上,单体应用的问题如下:
1:开发周期长,迭代速度慢
2:降低系统的SLO

假定现在张三负责引入微信支付,李四负责开发货源发布新功能,张三先提交的代码,李四更新代码冲突,那么如果支付模块是一个单独的项目,货源发布是一个单独的项目,此二人肯定就会出现代码冲突了,并且上线也独立部署,不会彼此影响,因为只修改了支付模块,货源发布模块,只需要测试这两个模块的功能即可,回归测试可能还有,但是测试的工作量就小多了,可能只需要十几分钟就可完成,所以我们需要微服务。

微服务的好处如下:

1:每个模块单独开发,开发之间互相影响
2:快速开发迭代,上线
3:新功能出问题,影响范围小,只影响本模块,增加系统的可用性
4:代码独立,schema独立,大大降低协作成本
5:提高系统的可用性

了解了微服务的好处之后我们接着来了解下,要想实现微服务都需要考虑哪些问题。

2:微服务需要考虑的问题

我们思考一下,当一个单体应用被拆分成多个微服务之后,最基础的功能应该是什么?毫无疑问是服务调用,所以微服务需要考虑和解决的第一个问题就是服务调用,但是为了提高服务处理请求的能能力,服务可能有多个,所以我们又需要负载均衡。现在服务可以调用服务了,当服务变得比较多之后,服务的调用关系就会变得很复杂,一旦出现问题,很难排查到底是哪个服务调用环节出现问题了,因此此时我们就需要链路追踪的功能来这个调用链清晰的展示出来,另外,服务变得多了之后,当某个服务出现问题,或者是请求压力过大,出现请求堆积的时候,可能会出现服务不可用的连锁反应,为了避免这个问题,我们就需要降级熔断限流的功能。到这里微服务集群本身的可用性已经得到了比较好的保障,但是我们还需要继续考虑其他的问题,比如多个微服务调用的数据一致性,此时我们就需要分布式事务的支持,这么多的服务,每个都有自己的配置文件,单独的各自维护将会带来非常大的工作量,为了解决这个问题,我们就需要配置中心的功能,假定某些微服务需要做安全校验,此时我们就需要引入网关的功能。

以上的这些内容详细可以参考下图:
在这里插入图片描述

写在后面

参考文章列表

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

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

相关文章

【小余送书第一期】《数据要素安全流通》参与活动,即有机会中奖哦!!

目录 1、背景介绍 2、本书编撰背景 3、本书亮点 4、本书主要内容 5、活动须知 1、背景介绍 随着大数据、云计算、人工智能等新兴技术的迅猛发展,数据已经成为我国经济社会发展的五大生产要素之一,《网络安全法》《个人信息保护法》《数据安全法》的…

Jmeter+Ant+Git+Jenkins持续集成介绍

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试) 一 简介 1.什么是ant? ant是构建工具 2.什么是构建 概念到处可查到,形象来说&#xff…

【NLP的Python库(04/4)】:Flair

一、说明 Flair是一个现代的NLP库。从文本处理到文档语义,支持所有核心 NLP 任务。Flair使用现代转换器神经网络模型来完成多项任务,并结合了其他Python库,可以选择特定的模型。其清晰的API和注释文本的数据结构,以及多语言支持&a…

[C]精炼分析状态机FSM

FSM:finite state machine 【有限状态机】,用通俗的语言来表达就是逻辑流程图。 当前状态满足触发条件时,就会切换到下一个状态,并执行对应的任务操作。传统代码做法是用if-else 或者 switch-case来处理。若要做到可扩展性良好的…

正确设置PyTorch训练时使用的GPU资源

背景: 最近在使用Hugging Face的transformers api来进行预训练大模型的微调,机器是8卡的GPU,当我调用trainer.train()之后,发现8个GPU都被使用了,因为这个机器上面还有其他人跑的模型,当我进行训练的时候&…

Qt使用I.MX6U开发板上的按键(原理:将电脑键盘方向键↓在Qt中的枚举值与开发板中按键定义的枚举值一致,这样电脑端测试效果就与开发板的一致)

在上篇介绍了Qt点亮I.MX6U开发板的一个LED,对于Qt控制I.MX6U开发板的一个蜂鸣器原理也是一样的,就不做详细介绍,具体可参考Qt控制I.MX6U开发板的一个蜂鸣器,本篇介绍Qt使用I.MX6U开发板上的按键的相关内容。 文章目录 1. 开发板硬…

【Verilog 教程】6.5 Verilog避免Latch

关键词:触发器,锁存器 Latch 的含义 锁存器(Latch),是电平触发的存储单元,数据存储的动作取决于输入时钟(或者使能)信号的电平值。仅当锁存器处于使能状态时,输出才会随着…

HC32 IIC/I2C读写

IIC状态码 IIC 初始化 void iicInit(uint32_t speed) {stc_gpio_cfg_t stcGpioCfg;DDL_ZERO_STRUCT(stcGpioCfg);Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE); //开启GPIO时钟门控stcGpioCfg.enDir GpioDirOut; ///< 端口方向配置…

【2023最新版】超详细NMAP安装保姆级教程,Nmap的介绍、功能并进行网络扫描,收藏这一篇就够了

简介 从诞生之初&#xff0c;Nmap就一直是网络发现和攻击界面测绘的首选工具。从主机发现和端口扫描&#xff0c;到操作系统检测和IDS规避/欺骗&#xff0c;Nmap是大大小小黑客行动的基本工具。 为了绘制网络拓扑图&#xff0c;Nmap的发送特制的数据包到目标主机&#xff0c;…

【Amazon】AI 代码生成器—Amazon CodeWhisperer初体验 | 开启开挂编程之旅

使用 AI 编码配套应用程序更快、更安全地构建应用程序 文章目录 1.1 Amazon CodeWhisperper简介1.2 Amazon CodeWhisperer 定价2.1 打开VS Code2.2 安装AWS ToolKit插件 一、前言 1.1 Amazon CodeWhisperper简介 1️⃣更快地完成更多工作 CodeWhisperer 经过数十亿行代码的训…

目标检测如何演变:从区域提议和 Haar 级联到零样本技术

目录 一、说明 二、目标检测路线图 2.1 路线图&#xff08;一般&#xff09; 2.2 路线图&#xff08;更传统的方法&#xff09; 2.3 路线图&#xff08;深度学习方法&#xff09; 2.4 对象检测指标的改进 三、传统检测方法 3.1 维奥拉-琼斯探测器 (2001) 3.2 HOG探测器…

为什么u盘在mac上显示不出来

插入U盘是个看似简单的操作&#xff0c;但有时候在Mac电脑上却出现了无法显示U盘的情况。这样的问题是非常让人头疼的&#xff0c;特别是当你急需使用U盘中的文件时。那么&#xff0c;究竟为什么U盘在Mac上会显示不出来呢&#xff1f;今天就让我们一起来深入了解一下这个问题&a…

编程新时代:Amazon CodeWhisperer 助您轻松驾驭代码世界

文章目录 一、什么是 Amazon CodeWhisperer&#xff1f;二、个人无限免费使用三、安装配置3.1 手把手教你在pycharm配置3.2 同理在VSCODE安装 三、Pycharm上测试3.1 根据注释写代码3.2 检查修复代码错误3.3 构建一个简单爬虫 四、 VSCODE上测试4.1 个性化体验4.2 系统兼容性4.3…

【再识C进阶3(下)】详细地认识字符分类函数,字符转换函数和内存函数

前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;正在学习C&#xff0c;数据结构等&#x1f440; &#x1f493;作者主页&#xff1a;加油&#xff0c;旭杏的主页&#x1f440; ⏩本文收录在&#xff1a;再识C进阶的专栏&#x1…

vuereact质检工具(eslint)安装使用总结

1、ESLint ESLint工具主要类似java中的checkStyle和findbugs&#xff0c;是检查代码样式和逻辑规范的工具。 1.1、ESLint安装流程 打开VSCode软件&#xff0c;打开扩展中心&#xff0c;下载ESLint插件 图1.1 点击后面的install按进行安装&#xff0c;如图1.2所示&#xff1…

黑马VUE3视频笔记

目录 一、使用create-vue创建项目 二、setup选项 三、reactive和ref函数 1.reactive() 2.ref() 三、computed 四、watch ​五、生命周期函数 六、父传子、子传父 父传子defineProps 子传父defineEmits 七、模板引用 ref defineExpose 八、跨层传递普通数据 prov…

SpringBoot 学习(二)配置

2. SpringBoot 配置 2.1 配置文件类型 配置文件用于修改 SpringBoot 的默认配置。 2.1.1 properties 文件 **properties ** 是属性文件后缀。 文件名&#xff1a;application.properties 只能保存键值对。 基础语法&#xff1a;keyvalue namewhy注入配置类 Component //…

百度SEO优化不稳定的原因分析(提升网站排名的稳定性)

百度SEO优化不稳定介绍蘑菇号-www.mooogu.cn SEO不稳定是指网站在搜索引擎中的排名不稳定&#xff0c;随着时间的推移会发生变化。这种情况可能会出现在网站页面结构、内容质量、外链质量等方面存在缺陷或不合理之处。因此&#xff0c;优化SEO非常重要&#xff0c;可以提高网站…

Cruise 的界面和模型文件路径介绍

文章目录 打开 Cruise自带模型所在路径自带模型分类Cruise 中的模型路径解析打开用户手册建模界面介绍打开模型 打开 Cruise 最新的几个 Cruise 软件都是集成到一个平台上的&#xff0c;名为 AVL Advanced Simulation Desktop。 自带模型所在路径 User 选项卡下的模型&#x…

Spring实现简单的Bean容器

1.BeanDefinition&#xff0c;用于定义 Bean 实例化信息&#xff0c;现在的实现是以一个 Object 存放对象 public class BeanDefinition {/*** bean对象*/private Object bean;/*** 存放 &#xff08;定义&#xff09;Bean 对象*/public BeanDefinition(Object bean) {this.bea…