Spring Cloud:微服务基础知识

这篇具有很好参考价值的文章主要介绍了Spring Cloud:微服务基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


📃个人主页:不断前进的皮卡丘
🌞博客描述:梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记
🔥个人专栏:微服务专栏

一、系统架构演变

随着互联网的发展,网站应用的规模不断扩大,常规的应用架构已无法应对,分布式服务架构以及微服务架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

1. 单体应用架构

在企业发展的初期,一般公司的网站流量都比较小,只需要一个应用,将所有的功能代码打包成一个服务,部署到服务器上就能支撑公司的业务。这样也能够减少开发、部署和维护的成本。
比如搭建一个电商系统:客户下订单,商品展示,用户管理。这种将所有功能都部署在一个web容器中运行的系统就叫做单体架构。
微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

Web应用程序发展的早期,大部分web工程(包含前端页面,web层代码,service层代码,dao层代码)是将所有的功能模块,打包到一起并放在一个web容器中运行。
微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

单体架构优点
1.所有的功能集成在一个项目工程中
2.项目架构简单,前期开发成本低,周期低,是小型项目的首选

单体架构缺点
1.所有功能集成在一个工程中,对于大型项目不容易开发、扩展和维护,如果需要修改、新增某一个功能的话,需要对整个系统进行测试,重新部署。
2.系统性能扩展只能通过扩展集群节点,成本高,有瓶颈
3.一个模块出现问题,可能导致整个系统崩溃。
4.各个模块使⽤同⼀种技术框架,局限性太大,很难根据业务选择最适合的技术架构。
5.多团队同时对数据进行管理,容易产生安全漏洞。
6.模块内容太复杂,如果员工离职,可能需要很长时间才能完成任务交接。

2. 垂直应用架构

随着企业业务的不断发展,发现单节点的单体应用不足以支撑业务的发展,于是企业会将单体应用部署多份,分别放在不同的服务器上。但是,此时会发现不是所有的模块都会有比较大的访问量。如果想针对项目中的某些模块进行优化和性能提升,此时对于单体应用来说,是做不到的。因此,垂直应用架构诞生了。
垂直应用架构,就是将原来一个项目应用进行拆分,将其拆分为互不想干的几个应用,以此来提升系统的整体性能。
微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

我们将单体应用架构拆分为垂直应用架构之后,一旦访问量变大,我们只需要针对访问量大的业务增加服务器节点即可,无需针对整个项目增加服务器节点了。

优点
项目架构简单,前期开发成本低,周期短,小型项目的首选。
通过垂直拆分,原来的单体项目不至于无限扩大
不同的项目可采用不同的技术。
各系统能够分担整体访问的流量,解决了并发问题。
一个系统发生了故障,不应用其他系统的运行情况,提高了整体的容错率。
缺点
拆分后的各系统之间相对比较独立,无法进行互相调用。
各系统难免存在重叠的业务,会存在重复开发的业务,后期维护比较困难。

3. 分布式架构

我们将系统演变为垂直应用架构之后,当垂直应用越来越多,重复编写的业务代码就会越来越多。此时,我们需要将重复的代码抽象出来,形成统一的服务供其他系统或者业务模块来进行调用。此时,系统就会演变为分布式架构。
在分布式架构中,我们会将系统整体拆分为服务层和表现层。服务层封装了具体的业务逻辑供表现层调用,表现层则负责处理与页面的交互操作。
微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

优点:提高代码的复用性
缺点:耦合度变高,调用关系变得复杂

4. SOA架构

4.1 SOA概念

如何通俗易懂地解释什么是SOA?
SOA 全称为 Service-Oriented Architecture,即面向服务的架构。它可以根据需求通过网络对松散耦合的粗粒度应用组件(服务)进行分布式部署、组合和使用。一个服务通常以独立的形式存在于操作系统进 程中。
站在功能的角度,把业务逻辑抽象成可复用、可组装的服务,通过服务的编排实现业务的快速再生,目的:把原先固有的业务功能转变为通用的业务服务,实现业务逻辑的快速复用。
通过上面的描述可以发现 SOA 有如下几个特点:分布式、可重用、扩展灵活、松耦合

4.2 SOA

在分布式架构下,当部署的服务越来越多,重复的代码就会越来越多,对于容量的评估,小服务资源的浪费等问题比较严重。此时,我们就需要增加一个统一的调度中心来对集群进行实时管理。此时,系统就会演变为SOA(面向服务)的架构。
微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

优点
抽取公共的功能为服务,提高开发效率
对不同的服务进行集群化部署解决系统压力
基于ESB/DUBBO减少系统耦合
缺点
抽取服务的粒度较大
服务提供方与调用方接口耦合度较高

5.微服务架构

微服务是什么
微服务是一种架构模式,它提倡把单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务之间采用轻量级的通信机来互相协作(通常是基于HTTP协议的RESTful API),每一个服务都围绕在具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。而且,我们应尽量避免统一的、集中式的服务管理机制,对具体的一个来说,应该要根据业务上下文,选择合适的语言、工具来进行构建。
微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

  1. 所谓“服务”,其实指的是项目中的功能模块,它可以帮助用户解决某一个或一组问题,在开发过程中表现为 IDE(集成开发环境,例如 Eclipse 或 IntelliJ IDEA)中的一个工程或 Moudle。

  2. “微小”则强调的是单个服务的大小,主要体现为以下两个方面:

  • 微服务体积小,复杂度低:一个微服务通常只提供单个业务功能的服务,即一个微服务只专注于做好一件事,因此微服务通常代码较少,体积较小,复杂度也较低。
  • 微服务团队所需成员少:一般情况下,一个微服务团队只需要 8 到 10 名人员(开发人员 2 到 5 名)即可完成从设计、开发、测试到运维的全部工作。
  1. 每个服务都能够独立地部署到各种环境中,例如开发环境、测试环境和生产环境等,每个服务都能独立启动或销毁而不会对其他服务造成影响。

优点

  • 通过服务的原子化拆分,以及微服务的独立打包、部署和升级,小团队的交付周期将缩短,运维成

本也将大幅度下降

  • 微服务遵循单一原则。微服务之间采用Restful等轻量协议传输。

缺点

  • 微服务过多,服务治理成本高,不利于系统维护。
  • 分布式系统开发的技术成本高(容错、分布式事务等)。
  • 如果某个系统的远程调⽤出现问题,导致微服务不可⽤,就有可能产⽣级联反应,造成整个系统的

崩溃。

微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

6.SOA和微服务架构的关系

微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

2.分布式核心知识

1.分布式中的远程调用

在微服务架构中,通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分:序列化和通
信协议。常见的序列化协议包括json、xml、hession、protobuf、thrift、text、bytes等,目前主流的
远程调用技术有基于HTTP的RESTful接口以及基于TCP的RPC协议。

1.1RESTFUL接口

REST,即Representational State Transfer的缩写,如果一个架构符合REST原则,就称它为RESTful架构。
资源(Resources)
所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图 片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它, 每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地
址或独一无二的识别符。REST的名称"表现层状态转化"中,省略了主语。“表现层"其实指的是"资 源”(Resources)的"表现层"。
表现层(Representation)
“资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层”(Representation)。比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。URI只代表资源 的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示 格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。
状态转化(State Transfer)
访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变
化。互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因 此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。 客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词: GET、POST、PUT、DELETE。它们分别对应四种基本操作:**GET用来获取资源,POST用来新建资源 **(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

综合上面的解释,我们总结一下什么是RESTful架构

  • 每一个URI代表一种资源;
  • 客户端和服务器之间,传递这种资源的某种表现层;
  • 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

1.2RPC协议

RPC(Remote Procedure Call )
一种进程间通信方式。允许像调用本地服务一样调用远程服务。RPC
框架的主要目标就是让远程服务调用更简单、透明。RPC框架负责屏蔽底层的传输方式(TCP或者
UDP)、序列化方式(XML/JSON/二进制)和通信细节。开发人员在使用的时候只需要了解谁在什么
位置提供了什么样的远程服务接口即可,并不需要关心底层通信细节和调用过程。
微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

1.3二者的区别与联系

微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

1、HTTP相对更规范,更标准,更通用,无论哪种语言都支持http协议。如果你是对外开放API,例如 开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,现在开源中间件,基本最先支持 的几个协议都包含RESTful。
2、 RPC 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提 供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样 调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务。

2.分布式中的CAP原理

分布式中的CAP原理

1.分布式系统一定是由多个节点组成的系统。其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。
2.这些连通的节点上部署了我们的节点,并且相互的操作会有协同。
微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

分布式系 统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的 起点。
CAP理论由 Eric Brewer 在ACM研讨会上提出,而后CAP被奉为分布式领域的重要理论。分布式系统的
CAP理论,首先把分布式系统中的三个特性进行了如下归纳:
微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

通过学习CAP理论,我们得知任何分布式系统只可同时满足二点,没法三者兼顾,既然一个分布式系统无法同时满足一致性、可用性、分区容错性三个特点,所以我们就需要抛弃一样:
微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变

微服务请求路径后缀是什么,微服务,微服务,spring cloud,java,微服务架构演变文章来源地址https://www.toymoban.com/news/detail-777679.html

到了这里,关于Spring Cloud:微服务基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ASP.NET Core 基础知识】--路由和请求处理--路由概念(一)

    在Web应用中,路由是一个至关重要的概念,它负责将用户的请求映射到相应的处理程序,以确保正确的页面或资源被呈现给用户。通过将用户请求与适当的处理程序关联起来,使得应用能够以有序和可维护的方式响应用户的操作。 一、ASP.NET Core路由基础 1.1 路由的定义和作用

    2024年01月19日
    浏览(67)
  • web开发学习笔记(10.postman请求响应,后端接口基础知识)

    1.springboot使用get请求接受简单参数 上述写法不去别get或者post请求 2.postman各种提交方式的区别 1、form-data:                     就是http请求中的 multipart/form-data ,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传

    2024年01月20日
    浏览(53)
  • 【ASP.NET Core 基础知识】--路由和请求处理--路由概念(二)

    一、路由参数传递方式 1.1 查询字符串参数 在路由中,查询字符串参数是一种常见的方式传递信息。这种方式通过URL中的查询字符串(?key1=value1key2=value2)将参数附加到请求中。在ASP.NET Core中,可以通过以下方式在控制器动作方法中接收查询字符串参数: 在上述例子中,查询

    2024年01月21日
    浏览(86)
  • 【Spring】Spring基础知识 Java开发必看

    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前专攻C/C++、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专栏:陈童学的日记 💡其他专栏:C++STL、蓝桥杯,喜欢OJ的小伙伴可以看一手 🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​ ⛱️学习应使你快乐!望与诸君

    2024年02月13日
    浏览(42)
  • 接口测试基础知识(使用 Fiddler 抓包、使用 Postman 发起请求、Postman汉化教程)

    接口用来连接软件系统中的不同模块,一个模块可以通过调用另一个模块的接口来实现模块中的功能 通过接口文档或抓包来获取接口的基本调用方式 通过获取的接口信息来设计测试用例 发起接口测试 获取接口返回的结果,对结果进行验证和解析 验证接口URL的设计是否符合

    2024年02月11日
    浏览(47)
  • Java知识复习(八)Spring基础

    Spring :是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性 Spring主要指Spring Framework,就是指如上图所示的各项功能模块 SpringMVC主要指一种架构,MVC分别是Model模型、View视图、Controller控制器的简写,核心思想就是将数据、显示和业务逻辑分

    2023年04月18日
    浏览(43)
  • spring-bean的基础知识

    1.bean的别名 2.bean的作用范围 单例多例,即现在创建的bean对象是一个还是多个,默认情况下是单例,可在配置文件修改 bean scope=\\\"singleton/prototype\\\"/ 适合单例的bean 1.表现层对象 2.业务层对象 3.数据层对象 4.工具对象 不适合单例的bean 封装实体的域对象 3.bean实例化 1.调用无参构造

    2024年02月12日
    浏览(37)
  • HTTP基础:学习HTTP协议的基本知识,了解请求和响应的过程

    HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,它是Web中最基本的协议。 HTTP请求和响应都是由客户端和服务器之间进行的。 一个完整的HTTP请求由以下几个部分组成: 请求行:包括请求方法(GET、POST等)、请求的URI和HTTP协

    2024年02月12日
    浏览(44)
  • JAVA后端开发面试基础知识(八)——Spring

    Spring是一个轻量级Java开发框架 我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发,比如说 Spring 支持 IoC(Inverse of Control:控制反转) 和 AOP(Aspect-Oriented Programming:面向切面编程)、可以很方便地对数据库进行访问、

    2024年03月10日
    浏览(71)
  • Spring Boot数据访问基础知识与JDBC简单实现

    Spring Boot数据访问基础知识 Spring Data  ORM JDBC JPA JDBC简单实现 步骤1:新建Maven项目,添加依赖 步骤2:配置数据源—让程序可以访问到  步骤3:配置数据源—让IDEA可以访问到 步骤4:添加数据库和表 步骤5:建立各层级框架,写入相对应代码 步骤6:测试各个接口方法 总结  

    2024年02月14日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包