【微服务】-认识微服务

news/2024/4/29 4:57:20/文章来源:https://blog.csdn.net/m0_64210833/article/details/129280673

目录

1.1 单体、分布式、集群

单体

分布式

集群

1.2 系统架构演变

1.2.1 单体应⽤架构

1.2.2 垂直应⽤架构

1.2.3 分布式架构

1.2.4 SOA架构

1.2.5 微服务架构

1.3 微服务架构介绍

微服务架构的常⻅问题

1.4 SpringCloud介绍

1.4.1 SpringBoot和SpringCloud有啥关系?

1.4.2 SpringCloud版本名称?

1.4.3 为什么选择SpringCloud Alibaba?


1.1 单体、分布式、集群

        我们学习微服务之前,需要先理解单体、集群、分布式这些概念,这样会帮助我们在学习后⾯课程会更加容易些

单体

        ⼀个系统业务量很⼩的时候所有的代码都放在⼀个项⽬中就好了,然后这个项⽬部署在⼀台服务器上就好了。整个项⽬所有的服务都由这台服务器提供。这就是单机结构。
单体应⽤开发简单,部署测试简单.但是存在⼀些问题,⽐如:单点问题,单机处理能⼒有限,当你的业务增⻓到⼀定程度的时候,单机的硬件资源将⽆法满⾜你的业务需求。

分布式

        由于整个系统运⾏需要使⽤到TomcatMySQL,单台服务器处理的能⼒有限,2G的内存需要分配给
TomcatMySQL使⽤,,随着业务越来越复杂,请求越来越多. 内存越来越不够⽤了,所以这时候我们就需要进⾏分布式的部署

 

        我们进⾏⼀个评论的请求,这个请求是需要依赖分布在两台不同的服务器的组件[TomatMySQL],才能 完成的. 所以叫做分布式的系统

集群

        在上⾯的图解中其实是存在问题的,⽐如Tomcat存在单点故障问题,⼀旦Tomcat所在的服务器宕机不可⽤了,我们就⽆法提供服务了,所以针对单点故障问题,我们会使⽤集群来解决.那什么是集群模式呢?
单机处理到达瓶颈的时候,你就把单机复制⼏份,这样就构成了⼀个集群。集群中每台服务器就叫做这个集群的⼀个节点,所有节点构成了⼀个集群。每个节点都提供相同的服务,那么这样系统的处理 能⼒就相当于提升了好⼏倍(有⼏个节点就相当于提升了这么多倍)。
但问题是⽤户的请求究竟由哪个节点来处理呢?最好能够让此时此刻负载较⼩的节点来处理,这样使得每个节点的压⼒都⽐较平均。要实现这个功能,就需要在所有节点之前增加⼀个调度者的⻆⾊,⽤户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这 调度者有个⽜逼了名字——负载均衡服务器。

 

我们在上⾯的图中仅展示了Tomcat的集群,如果MySQL压⼒⽐较⼤的情况下,我们也是可以对MySQL进⾏集群的

1.2 系统架构演变

        随着互联⽹的发展,⽹站应⽤的规模也不断的扩⼤,进⽽导致系统架构也在不断的变化。
从互联⽹早起到现在,系统架构⼤体经历了下⾯⼏个过程: 单体应⽤架构--->垂直应⽤架构--->分布
式架构--->SOA架构--->微服务架构。
接下来我们就来了解⼀下每种系统架构是什么样⼦的, 以及各有什么优缺点。

1.2.1 单体应⽤架构

互联⽹早期,⼀般的⽹站应⽤流量较⼩,只需⼀个应⽤,将所有功能代码都部署在⼀起就可以,这
样可以减少开发、部署和维护的成本。
        ⽐如说⼀个电商系统,⾥⾯会包含很多⽤户管理,商品管理,订单管理,物流管理等等很多模块,我们会把它们做成⼀个web项⽬,然后部署到⼀台tomcat服务器上。

 

优点:
项⽬架构简单,⼩型项⽬的话, 开发成本低
项⽬部署在⼀个节点上, 维护⽅便
缺点:
全部功能集成在⼀个⼯程中,对于⼤型项⽬来讲不易开发和维护
项⽬模块之间紧密耦合,单点容错率低
⽆法针对不同模块进⾏针对性优化和⽔平扩展

1.2.2 垂直应⽤架构

        随着访问量的逐渐增⼤,单⼀应⽤只能依靠增加节点来应对,但是这时候会发现并不是所有的模块 都会有⽐较⼤的访问量. 还是以上⾯的电商为例⼦, ⽤户访问量的增加可能影响的只是⽤户和订单模块, 但是对消息模块 的影响就⽐较⼩. 那么此时我们希望只多增加⼏个订单模块, ⽽不增加消息模块. 此时单体应⽤就做不 到了, 垂直应⽤就应运⽽⽣了.
        所谓的垂直应⽤架构,就是将原来的⼀个应⽤拆成互不相⼲的⼏个应⽤,以提升效率。⽐如我们可以将上⾯电商的单体应⽤拆分成:
电商系统(⽤户管理 商品管理 订单管理)
后台系统(⽤户管理 订单管理 客户管理)
CMS系统(⼴告管理 营销管理)
这样拆分完毕之后,⼀旦⽤户访问量变⼤,只需要增加电商系统的节点就可以了,⽽⽆需增加后台
CMS的节点。
 

 

优点:
        系统拆分实现了流量分担,解决了并发问题,⽽且可以针对不同模块进⾏优化和⽔平扩展
⼀个系统的问题不会影响到其他系统,提⾼容错率
缺点:
        系统之间相互独⽴, ⽆法进⾏相互调⽤
        系统之间相互独⽴, 会有重复的开发任务

1.2.3 分布式架构

        当垂直应⽤越来越多,重复的业务代码就会越来越多。这时候,我们就思考可不可以将重复的代码 抽取出来,做成统⼀的业务层作为独⽴的服务,然后由前端控制层调⽤不同的业务层服务呢? 这就产⽣了新的分布式系统架构。它将把⼯程拆分成表现层和服务层两个部分,服务层中包含业务 逻辑。表现层只需要处理和⻚⾯的交互,业务逻辑都是调⽤服务层的服务来实现。

 

 

优点
        抽取公共的功能为服务层,提⾼代码复⽤性
缺点
        系统间耦合度变⾼,调⽤关系错综复杂,难以维护

1.2.4 SOA架构

        在分布式架构下,当服务越来越多,容量的评估,⼩服务资源的浪费等问题逐渐显现,此时需增加 ⼀个调度中⼼对集群进⾏实时管理。此时,⽤于资源调度和治理中⼼(SOA Service Oriented Architecture,⾯向服务的架构)是关键。

 

优点:
        使⽤注册中⼼解决了服务间调⽤关系的⾃动调节
缺点:
        服务间会有依赖关系,⼀旦某个环节出错会影响较⼤( 服务雪崩 )
        服务关系复杂,运维、测试部署困难

 

1.2.5 微服务架构

        微服务架构在某种程度上是⾯向服务的架构SOA继续发展的下⼀步,它更加强调服务的"彻底拆分"

 

优点
        服务原⼦化拆分,独⽴打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
微服务之间采⽤RESTful等轻量级Http协议相互调⽤
缺点
        分布式系统开发的技术成本⾼(容错、分布式事务等)

1.3 微服务架构介绍

        微服务架构, 简单的说就是将单体应⽤进⼀步拆分,拆分成更⼩的服务,每个服务都是⼀个可以独⽴运⾏的项⽬。

微服务架构的常⻅问题

⼀旦采⽤微服务系统架构,就势必会遇到这样⼏个问题:
这么多⼩服务,如何管理他们?
这么多⼩服务,他们之间如何通讯?
这么多⼩服务,客户端怎么访问他们?
这么多⼩服务,⼀旦出现问题了,应该如何⾃处理?
这么多⼩服务,⼀旦出现问题了,应该如何排错?
对于上⾯的问题,是任何⼀个微服务设计者都不能绕过去的,因此⼤部分的微服务产品都针对每⼀
个问题提供了相应的组件来解决它们

 

1.4 SpringCloud介绍

        Spring Cloud是⼀系列框架的集合。它利⽤Spring Boot的开发便利性巧妙地简化了分布式系统基础设施 的开发,如服务发现注册、配置中⼼、消息总线、负载均衡、断路器、数据监控等,都可以⽤Spring Boot的开发⻛格做到⼀键启动和部署。
Spring Cloud并没有重复制造轮⼦,它只是将⽬前各家公司开发的⽐较成熟、经得起实际考验的服务框 架组合起来,通过Spring Boot⻛格进⾏再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了⼀套简单易懂、易部署和易维护的分布式系统开发⼯具包。

1.4.1 SpringBootSpringCloud有啥关系?

        SpringBoot专注于快速⽅便的开发单个个体微服务。
        SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的⼀个个单体微服务整 合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、事件总线、分布式 事务、等等集成服务。
总结: SpringBoot专注于快速、⽅便的开发单个微服务个体,SpringCloud关注全局的服务治理组件的集
合。

1.4.2 SpringCloud版本名称?

因为Spring Cloud不同其他独⽴项⽬,它是拥有很多⼦项⽬的⼤项⽬。所以它是的版本是 版本名+版本 号 (如Greenwich.SR6)。
版本名:是伦敦的地铁名
版本号:SRService Releases)是固定的 ,⼤概意思是稳定版本。后⾯会有⼀个递增的数字。
所以 Greenwich.SR6就是Greenwich的第6Release版本。

1.4.3 为什么选择SpringCloud Alibaba

        我们这⾥为什么选择SpringCloud Alibaba呢,主要因为SpringCloud Netflix的组件:服务注册与发现的 Eureka、服务限流降级的 Hystrix、⽹关 Zuul都已经停⽌更新了,当然继续使⽤是没问题的,只是出现 问题,官⽅不维护,需要⾃⾏解决.

 

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

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

相关文章

高压放大器知识科普介绍

高压放大器是一种用于放大高压信号的电子设备,具有高压输出,低噪声,高精度,高稳定性,高可靠性,低功耗,低成本等的优点,所以才被广泛应用在磁场探测、电磁脉冲放大、电磁波放大、电磁…

Arduino IDE启动闪退或者运行中闪退

文章目录一、你中了哪一种?1、安装了不符合规格的库文件2、安装了不符合规范的开发板库文件二、解决方案1、轻方案2、全盘重来Arduino IDE启动闪退或者运行中闪退,出现这样的问题,其实不需要思考了,就是运行库配置的问题&#xff…

(Trie Tree)字典树

(Trie Tree)字典树 场景:在n个字符串中查找某个字符串。 暴力匹配,时间复杂度为O(nm),m为字符串平均长度,效率过低。 字典查找单词"fly",首先查找’f’,然后…

HACKTHEBOX——Teacher

nmapnmap -sV -sC -p- -T4 -oA nmap 10.10.10.153nmap只发现了对外开放了80端口,从http-title看出可能是某个中学的官网http打开网站确实是一个官网,查看每个接口看看有没有可以利用的地方发现了一个接口,/images/5.png,但是响应包…

【计算机二级python】综合题目

计算机二级python真题 文章目录计算机二级python真题题目一:全球大学排名题目二:红楼梦题目一:全球大学排名 在省略号处填写一行或多行代码,完成如下功能‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪…

web,h5海康视频接入监控视频流记录三(后台node取流)

前端vue,接入ws视频播放 云台控制 ,回放预览,都是需要调对应的海康接口。相当于,点击时,请求后台写好的接口,接口再去请求海康的接口 调用云台控制是,操作一次,不会自己停止&#x…

SpringBoot+Nacos+OpenFeign环境搭建

目录 1.boot方式nacos与openFeign集成 1.引入依赖 2.添加配置 3.测试接口调用 4.常见问题: 1.版本依赖 2.nacos客户端 2.cloud方式nacos与openFeign集成 1.引入依赖 2.添加配置 3.接口定义 4.开启FeignClients客户端 5.远程接口测试 6.Nacos配置中心 1…

【谷粒学院】微信扫码登录(199~206)

199.OAuth2介绍 OAuth2是什么? OAuth2是针对特定问题的一种解决方案 主要可以解决两个问题:开放系统间授权、分布式访问问题 一、OAuth2解决什么问题 1、OAuth2提出的背景 照片拥有者想要在云冲印服务上打印照片,云冲印服务需要访问云存储服…

算法训练营 day63 单调栈 下一个更大元素II 接雨水

算法训练营 day63 单调栈 下一个更大元素II 接雨水 下一个更大元素II 503. 下一个更大元素 II - 力扣(LeetCode) 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的…

Jenkins(二):Jenkins插件安装

目录 一、Jenkins汉化 二、配置Jenkins插件 一、Jenkins汉化 1、登录进Jenkins,点击“Manage Jenkins”菜单,选择“Manage Plugins”。 2、点击“Available plugins”,搜索“Chinese”,然后点击“立即下载,安装后重启”。 二、…

计算机网络--网络层 IPv4地址概述(day05)

网络层 网络层提供的两种服务 IPv4地址概述 IPv4地址就是给因特网(Internet)上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符 IPv4地址的编址方法经历了如下三个历史阶段: 分类编址 1981划分子网 1985无分类编址…

元宇宙如何在未来5年影响你的业务

自新冠疫情暴发以来,虽然数字经济的和实体经济受到了严重的冲击和影响,但这也加速了元宇宙在全球的发展。区块链、数字资产和非同质化代币(NFTs)的兴起进一步推动了世界对元宇宙的需求。元宇宙被定义为用户可以在其中进行互动的虚…

全网资料最全Java数据结构与算法-----算法分析

算法分析 研究算法的最终目的就是如何花更少的时间,如何占用更少的内存去完成相同的需求,并且也通过案例演示了不同算法之间时间耗费和空间耗费上的差异,但我们并不能将时间占用和空间占用量化,因此,接下来我们要学习…

【微信小程序】-- WXSS 模板样式- 全局样式和局部样式(十四)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…

前端开发规范,你真的了解吗?一起来学习一下前端开发规范,让你的代码高级起来!

代码规范 1 编码风格规范 1.1 使用ES6风格编码源码 定义变量使用let ,定义常量使用const 使用export ,import 模块化 1.2 组件 props 原子化 提供默认值 使用 type 属性校验类型 使用 props 之前先检查该 prop 是否存在 1.3 避免 this.$parent 1.4 谨慎使用 …

服装销售管理系统的实现

技术:Java、JSP等摘要:随着我国市场经济的发展和人们对服装产品需求的迅速增加,服装行业正处于一个高速发展的时期。行业的快速发展必然导致竞争的加剧,要想在激烈的时常竞争中谋求发展,客观上要求企业必须加强管理&am…

深入理解Storm 之 TridentStrom

从Demo讲起: FixedBatchSpout spout new FixedBatchSpout(new Fields("sentence"), 3, new Values("the cow jumped over the moon"),new Values("the man went to the store and bought some candy"),new Values("four score and seven …

环境搭建02-Ubuntu16.04 安装CUDA和CUDNN、CUDA多版本替换

1、CUDA安装 (1)下载需要的CUDA版本 https://developer.nvidia.com/cuda-toolkit-archive (2)安装 sudo sh cuda_8.0.61_375.26_linux.run(3)添加环境 gedit ~/.bashrc在文件末尾添加: ex…

【JVM】垃圾收集器理论算法

垃圾收集算法 垃圾收集算法是内存回收的方法理论(理论方法,并未实际实现) 分代收集理论 JVM虚拟机的垃圾收集是采用分代收集算法,根据对象的存活周期的不同将内存分块。java将堆分为新生代和老年代,就可以根据不同年龄的不同特点…

【Linux】理解文件系统

文章目录理解文件系统了解磁盘结构inode理解文件系统 了解磁盘结构 磁盘是计算机中的一个 机械设备 这个磁盘的盘片就像光盘一样,数据就在盘片上放着, 但是光盘是只读的,磁盘是可读可写的 机械硬盘的寻址的工作方式: 盘片不断旋转,磁头不断摆动,定位到特定的位置 我们可以把…