【微服务】-认识微服务

news2024/10/3 2:16:16

目录

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 单体、分布式、集群

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

单体

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

分布式

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

 

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

集群

        在上⾯的图解中其实是存在问题的,⽐如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 )。
版本名:是伦敦的地铁名
版本号: SR Service Releases )是固定的 , ⼤概意思是稳定版本。后⾯会有⼀个递增的数字。
所以 Greenwich.SR6 就是 Greenwich 的第 6 Release 版本。

1.4.3 为什么选择SpringCloud Alibaba

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

 

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

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

相关文章

【Flutter入门到进阶】Flutter基础篇---介绍与环境

1 Flutter介绍 Flutter是谷歌公司开发的一款开源、免费的UI框架,可以让我们快速的在Android和iOS上构建高质量 App。它最大的特点就是跨平台、以及高性能。 目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux等。 Flutter基于谷歌的dart语言&#…

NLTK与StanfordNLP工具包结合使用

(一) 概述 1.NLTK NLTK是一款著名的python自然语言处理工具包,其内收集了NLP领域大量的公开数据集以及常用模型,涵盖了分词,词性标注,命名实体识别,句法分析,依存分析等各种NLP领域的子任务。 2.Stanfor…

【Linux】动静态库-概念制作

文章目录前置知识:库的命名C标准库动静态库安装C/C静态库完整的库需要的东西制作静态库制作使用一个小疑惑:制作动态库制作使用总结:前置知识: 一般库分为两种:动态库和静态库 静态库和动态库本质就是文件!也有inode 库的命名 库文件的命名一般为: libXXXXX.so 或…

基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计

一、方案背景 众所周知,在TSINGSEE青犀视频解决方案中,EasyCVR视频智能融合共享平台主要作为视频汇聚平台使用,不仅能兼容安防标准协议RTSP/Onvif、国标GB28181,互联网直播协议RTMP,私有协议海康SDK、大华SDK&#xf…

谷歌seo做的外链怎样更快被semrush识别

本文主要分享做谷歌seo外链如何能让semrush工具快速的记录并能查询到。 本文由光算创作,有可能会被剽窃和修改,我们佛系对待这种行为吧。 谷歌seo做的外链怎样更快被semrush识别? 答案是:多使用semrush搜索目标网站可加速爬虫抓…

SOLIDWORKS Premium 2023 SP1.0 三维设计绘图软件

SOLIDWORKS 中文完美正式版提供广泛工具来处理最复杂的问题,并提供深层技术完成关键细节工作。新功能可助您改善产品开发流程,以更快地将创新产品投入生产。Solidworks 是达索公司最新推出的三维CAD系统,它可让设计师大大缩短产品的设计时间,让产品得以快速、高效地投向市场…

2023年/2024届 暑期实习 【汇总+更新】

文章目录百度2024届暑期实习生招聘米哈游2023春季校园招聘正式启动(含暑期实习)拼多多2024届暑期实习生招聘百度2024届暑期实习生招聘 百度2023届校园招聘春季补录仍在持续进行中,本周日(3月5日)截止网申,…

ARM基础

文章目录1.ARM成长史1.1 ARM发展的里程碑11.2 ARM发展的里程碑21.3 ARM发展的里程碑31.4 ARM发展的里程碑42.ARM的商业模式和生态系统3.先搞清楚各种版本号3.1 ARM 的型号命名问题3.2 ARM 的几种版本号3.3 ARM型号的发展历程4.SoC和CPU的区别 & 外设概念的引入4.1 SoC和CPU…

面试问到不会的技术问题?大小公司?程序员、校招面试技巧

大家好,欢迎来到停止重构的频道。本期我们分享一下程序员面试的相关经验。可能是3月离职高峰,又或者毕业生准备找工作的缘故,最近有一些朋友问我们关于面试方面的经验。问题五花八门:面试总是紧张?项目、工作经验怎么介…

2023功能测试真的没有出路了吗?不会自动化测试的我留下了悔恨的泪水...

直接抛出我的结论:手工做业务类测试,没有前途。10K的工资已经是天花板 个人建议赶紧从业务测试跳出来,立即学习代码,走自动化测试方向。目前趋势,业务测试需要用自动化做。 为了让大家能够信服我的观点,本…

python-爬虫-字体加密

直接点 某8网 https://*****.b*b.h*****y*8*.com/ 具体网址格式就是这样的但是为了安全起见,我就这样打码了. 抛出问题 我们看到这个号码是在页面上正常显示的 F12 又是这样就比较麻烦,不能直接获取.用requests库也是获取不到正常想要的 源码的,因为字体加密了. 查看页面源代码…

开发一个会员管理系统

背景 由于现在公司内客户量剧增, 简单的靠电话及笔记本记录,来维护客户有些困难,但又不想去花钱购买那些专业版的会员管理系统,只能自己动手撸一个相对简易的会员系统来使用了。 开发语言及使用技术 后端:java、mys…

滑动窗口(同向)同向双指针 leetcode713 3 1004 1234

同向双指针的理解 双指针从同一侧开始走一般是right进行无脑遍历,left控制边界(导致模板化)深刻理解题目概念以及**(right - left 1)** 的含义多思考画图 模板 class Solution { public:int numSubarrayProductLess…

NLP中一些工具列举

文章目录StanfordcoreNLPStanzaTankitspaCySuPar总结StanfordcoreNLP 这个老早就出来了,用java写的,但是已经有很多比他效果好的了。 Stanza 2020ACL发表的,看名字就知道和上一个是同一家的。 用已经切好词的句子进行依存分析。 这个功能…

百度“文心一言”携手酷开科技,实现AI智能领域新突破!

进入21世纪,AI人工智能一直都是讨论度非常高的话题之一,各行各业的领导者都开始在智能领域进行了初步探索,这也证明了AI人工智能在未来一定会在很大程度上影响我们的生活、工作。 近日,深圳市酷开网络科技股份有限公司成为百度文…

Kuangbin 线性DP 最大和加强加强版

呃呃,一道题写了我一下午4546. 最大和加强加强版 - AcWing题库题意:思路:首先这道题没有明显的阶段,因此状态设计不能按照阶段去设计我们按照题目给的量去设计状态:设dp[i][j]为考虑前i个数分为j组的最大可能和如果这样…

百度前端二面vue面试题指南

Vue 组件间通信有哪几种方式? ​ Vue 组件间通信是面试常考的知识点之一,这题有点类似于开放题,你回答出越多方法当然越加分,表明你对 Vue 掌握的越熟练。Vue 组件间通信只要指以下 3 类通信:父子组件通信、隔代组件通…

5个好用的视频素材网站

推荐五个高质量视频素材网站,免费、可商用,赶紧收藏起来! 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 网站素材非常丰富,有平面、UI、电商、办公、视频、音频等相关素材,视频素材质量很高,全部都是…

Java——异常

目录 什么是异常 异常处理主要的5个关键字 异常的体系结构 异常语法 异常的分类 异常的处理流程 异常的处理 防御式编程 异常的抛出 throw的注意事项 异常的捕获 异常声明throws try-catch捕获处理 finally 自定义异常类 throw和throws区别 什么是异常 程序在运行时出现错…

什么情况下Java程序会产生死锁?如何定位、修复?

第18讲 | 什么情况下Java程序会产生死锁?如何定位、修复? 今天,我会介绍一些日常开发中类似线程死锁等问题的排查经验,并选择一两个我自己修复过或者诊断过的核心类库死锁问题作为例子,希望不仅能在面试时,…