# 从浅入深 学习 SpringCloud 微服务架构(一)基础知识

news2024/11/22 17:13:56

从浅入深 学习 SpringCloud 微服务架构(一)基础知识

1、系统架构演变:

1)单体应用架构。如电商项目。

用户管理、商品管理、订单管理,在一个模块里。

优点:开发简单,快速,适用于小型应用,
缺点:不易扩展扩展维护,代码耦合。

2)垂直应用架构:

用户中心,商品系统,后台系统,多个模块横向集成在一个容器中。

优点:解决高并发问题,针对不同模块(子工程)优化,方便水平扩展,容错。
缺点:系统间相互独立,有重复开发工作。

3)分布式架构:

功能展示层:电商系统,CMS 系统,后台管理系统。
服务层:用户服务,订单服务,其他服务。

优点:抽取公共的功能为服务,提高开发效率。
对不同的服务进行集群化部署解决系统压力。
基于 ESB/DUBBO 减少系统耦合。

缺点:抽取服务的粒度较大,服务提供方与调用方接口耦合度较高。

2、SOA :

全称 Service-Oriented Architecture 面向服务的架构,
它可以根据需求通过网络对松散的耦合的粗粒度应用组件(服务)进行分布式部署、组合和使用。一个服务通常以独立的形式存在于操作系统进程中。

站在功能的角度,把业务逻辑抽象成可复用、可组装的服务,通过服务的编排实现业务快速再生,
目的:把原先固有的业务转变为通用的业务服务,实现业务逻辑快速复用。

SOA 特点:分布式、可重用、扩展灵活、松耦合。

在这里插入图片描述

3、微服务架构:

客户端:

PC 端:电商系统(用户管理、商品管理、订单管理)
			CMS 系统(广告管理、营销管理)、
			后台管理系统(用户管理、客户管理)、
			
移动端:Android、IOS、H5。

服务网关

服务层:用户管理服务、用户鉴权服务、商品服务、订单服务、
CMS 服务、客户管理服务、物流服务 …

数据库:用户数据库、订单数据库、商品数据库、CMS 数据库。

优点:通过服务的原子化拆分,以及微服务的独立打包、部署和升级,
小团队的交付周期将缩短,运维成本也将大幅度下降。
微服务遵循单一原则,微服务之间采用 Restful 等轻量协议传输。

缺点:微服务过多,服务治理成本高,不利于系统维护。
分布式系统开发的技术成本高(容错、分布式事务等)。

在这里插入图片描述

4、SOA 与 微服务区别:

功能 SOA 微服务

组件大小 大块业务逻辑 单独任务或小块业务逻辑
耦合 通常松耦合 总是松耦合
公司架构 任何类型 小型、专注于功能交叉团队
管理 着重中央管理 着重分散管理
目标 确保应用能够交互操作 执行新功能、快速拓展开发团队。

在这里插入图片描述

5、远程调用技术:

RPC 协议 和 HTTP 协议。CAP 原理。

6、RPC :

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

在这里插入图片描述

7、分布式远程调用:

1)在微服务架构中,通常存在多个服务之间的远程调用的需求,远程调用通常包含两部分:序列化和通信协议。

2)常见的序列化协议包括:json,xml,hession,protobuf,thrift,text,bytes 等。

3)目前主流的远程调用技术有:基于 HTTP 的 RESTful 接口 和 基于 TCP 的 RPC 协议。

8、RPC 与 RESTful 比较

1)Restful 接口:即 Representational State Transfer 缩写,
如果一个架构符合 REST 原则,就称它为 Restful 架构。

Restful 一般使用通信协议 HTTP,性能略低,灵活度高,应用于微服务架构。
http 协议 相对更规范,更标准,更通用,无论那种语言都支持 http 协议。
如果对外开放 API,如开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,现在开源中间件,基本最先支持的几个协议都包含 Restful。

2)RPC 协议:通讯协议一般使用 TCP,性能较高,灵活度低,应用于 SOA 架构。
RPC 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,
提高调用方与提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节,
让调用方感觉就像调用本地函数调用远端函数,让服务提供方感觉就像实现一个本地函数一样来实现服务。

9、CAP 理论:

1)CAP 理论由 Eric Brewer 在 ACM 研讨会上提出,而后 CAP 被奉为分布式领域的重要理论。

2)分布式系统的 CAP 理论,首先把分布式系统中的三个特性进行归纳。

A 可用性(保持服务可用,多节点)、
C 一致性(多节点数据一致)、
P 分区容忍性(是否可将数据存到多个地方)。

3)一个系统不可能同时满足 CAP,只需要同时满足两个即可。

AC : 放弃分区容忍,如:物理数据库。
AP : 可以短暂允许数据不一致,如:NoSql 数据库,redis,mogodb。
CP : 放弃可用性,如:zookeeper 。

10、常见的微服务架构:

1)springcloud
2)Apache ServiceComb 架构。
3)ZeroC ICE 架构。

11、springcloud 架构概述:

springcloud 是一系列框架的有序集合,它利用 springboot 的开发便利性巧妙地简化了分布式系统基础设施的开发,
如:服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 springboot 的开发风格做到一键启动和部署。

springcloud 并没有重复制造轮子,它只是将目前各家公司开发的比较成熟,经得起实际考验的服务框架组合起来,通过 springboot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具。

12、springcloud 核心组件:

1)spring cloud Netflix 组件:

Eureka : 服务注册中心。
Ribbon : 客户端负载均衡。
Feign : 声明式服务调用。
Hystrix : 客户端容错保护。
Zuul : API 服务网关。

2)spring cloud Alibaba 组件:

Nacos : 服务注册中心。
Sentinel: 客户端容错保护。

3)springcloud 原生及其他组件:

Consul : 服务注册中心。
Config : 分布式配置中心。
Gateway : API 服务网关。
Sleuth/Zipkin : 分布式链路追踪。

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

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

相关文章

VScode远程连接虚拟机提示: 无法建立连接:XHR failed.问题解决方案

一问题描述 在vscode下载插件Remote-SSH远程连接虚拟机时提示无法建立连接 二.最大嫌疑原因: 我也是在网上找了许久,发现就是网络原因,具体不知,明明访问别的网页没问题,就是连不上,然后发现下载vscode的…

前端CSS基础4(像素,颜色,字体属性大小复合属性)

前端CSS基础4&#xff08;像素&#xff0c;颜色&#xff0c;字体属性大小复合属性&#xff09; CSS代码编写位置CSS像素CSS颜色CSS常用字体属性和大小字体的复合属性 CSS代码编写位置 在HTML文件的头部使用 <head><style>/* 在这里编写CSS代码 */</style> …

Meta Llama 3强势来袭:迄今最强开源大模型,性能媲美GPT-4

前言 Meta的最新语言模型Llama 3已经发布&#xff0c;标志着在大型语言模型&#xff08;LLM&#xff09;领域的一次重大突破&#xff0c;其性能在行业内与GPT-4相媲美。此次更新不仅提升了模型的处理能力和精确性&#xff0c;还将开源模型的性能推向了一个新的高度。 Huggingf…

从0开始学人工智能测试节选:Spark -- 结构化数据领域中测试人员的万金油技术(二)

Dataframe dataframe 是spark中参考pandas设计出的一套高级API&#xff0c;用户可以像操作pandas一样方便的操作结构化数据。毕竟纯的RDD操作是十分原始且麻烦的。而dataframe的出现可以让熟悉pandas的从业人员能用非常少的成本完成分布式的数据分析工作&#xff0c; 毕竟跟数据…

数仓建模—数仓架构发展史

数仓建模—数仓架构发展史 时代的变迁&#xff0c;生死的轮回&#xff0c;历史长河滔滔&#xff0c;没有什么是永恒的&#xff0c;只有变化才是不变的&#xff0c;技术亦是如此&#xff0c;当你选择互联网的那一刻&#xff0c;你就相当于乘坐了一个滚滚向前的时代列车&#xf…

电视音频中应用的音频放大器

电视机声音的产生原理是将电视信号转化为声音&#xff0c;然后通过扬声器将声音播放出来。当我们打开电视并选择频道时&#xff0c;电视机首先从天线或有线电视信号中获取声音信号。声音信号经过放大器放大之后&#xff0c;就能够通过扬声器发出声音。电视机声音的产生原理和音…

Ubuntu20.04 ISAAC SIM仿真下载使用流程(4.16笔记补充)

机器&#xff1a;华硕天选X2024 显卡&#xff1a;4060Ti ubuntu20.04 安装显卡驱动版本&#xff1a;525.85.05 参考&#xff1a; What Is Isaac Sim? — Omniverse IsaacSim latest documentationIsaac sim Cache 2023.2.3 did not work_isaac cache stopped-CSDN博客 Is…

2024蓝桥杯每日一题(最短路径)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;奶牛回家 试题二&#xff1a;Dijkstra求最短路 II 试题三&#xff1a;spfa求最短路 试题四&#xff1a;作物杂交 试题一&#xff1a;奶牛回家 【题目描述】 晚餐时间马上就到了&#x…

【JavaEE多线程】Thread类及其常见方法(上)

系列文章目录 &#x1f308;座右铭&#x1f308;&#xff1a;人的一生这么长、你凭什么用短短的几年去衡量自己的一生&#xff01; &#x1f495;个人主页:清灵白羽 漾情天殇_计算机底层原理,深度解析C,自顶向下看Java-CSDN博客 ❤️相关文章❤️&#xff1a;清灵白羽 漾情天…

【opencv】dnn示例-segmentation.cpp 通过深度学习模型对图像进行实时语义分割

模型下载地址&#xff1a; http://dl.caffe.berkeleyvision.org/ 配置文件下载&#xff1a; https://github.com/opencv/opencv_extra/tree/4.x/testdata/dnn 该段代码是一个利用深度学习进行语义分割的OpenCV应用实例。下面将详细解释代码的功能和方法。 引入库 引入了一些必要…

蓝桥杯2024年第十五届省赛真题-宝石组合

思路&#xff1a;参考博客&#xff0c;对Ha,Hb,Hc分别进行质因数分解会发现&#xff0c;S其实就等于Ha&#xff0c;Hb&#xff0c;Hc的最大公约数&#xff0c;不严谨推导过程如下&#xff08;字丑勿喷&#xff09;&#xff1a; 找到此规律后&#xff0c;也不能枚举Ha&#xff…

Go 单元测试之mock接口测试

文章目录 一、gomock 工具介绍二、安装三、使用3.1 指定三个参数3.2 使用命令为接口生成 mock 实现3.3 使用make 命令封装处理mock 四、接口单元测试步骤三、小黄书Service层单元测试四、flags五、打桩&#xff08;stub&#xff09;参数 六、总结6.1 测试用例定义6.2 设计测试用…

医学图像三维重建与可视化系统 医学图像分割 区域增长

医学图像的三维重建与可视化&#xff0c;这是一个非常有趣且具有挑战性的课题&#xff01;在这样的项目中&#xff0c;可以探索不同的医学图像技术&#xff0c;比如MRI、CT扫描等&#xff0c;然后利用这些图像数据进行三维重建&#xff0c;并将其可视化以供医生或研究人员使用。…

解决Mac使用Vscode无法调用外部终端

前言 今天遇到一个很奇怪的问题&#xff0c;之前好好的用Vscode还能调用外部终端&#xff0c;怎么今天不行了&#xff1f;问题出在哪里呢&#xff1f;请听我娓娓道来。 检查配置文件 我查看了一下配置文件&#xff0c;发现配置文件都是调用外部控制台&#xff0c;没毛病啊。 …

Objective-C网络数据捕获:使用MWFeedParser库下载Stack Overflow示例

概述 Objective-C开发中&#xff0c;网络数据捕获是一项常见而关键的任务&#xff0c;特别是在处理像RSS源这样的实时网络数据流时。MWFeedParser库作为一个优秀的解析工具&#xff0c;提供了简洁而强大的解决方案。本文将深入介绍如何利用MWFeedParser库&#xff0c;以高效、…

(最详细)关于List和Set的区别与应用

关于List与Set的区别 List和Set都继承自Collection接口&#xff1b; List接口的实现类有三个&#xff1a;LinkedList、ArrayList、Vector。Set接口的实现类有两个&#xff1a;HashSet(底层由HashMap实现)、LinkedHashSet。 在List中&#xff0c;List.add()是基于数组的形式来添…

Spring Boot后端+Vue前端:打造高效二手车交易系统

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

机器学习笔记 - 使用 OpenCV 的结构化森林进行边缘检测

一、简述 边缘检测是计算机视觉领域中一项非常重要的任务。这是许多纯计算机视觉任务(例如轮廓检测)的第一步。即使涉及深度学习,较深层也首先学习识别边缘,然后再学习图像的复杂特征。所以,我们可以说边缘检测在计算机视觉领域非常重要。拥有良好且高效的图像边缘检测算法…

后端返回的数据中含有Null的则不在前端展示

方式 1&#xff1a;application 上加配置 只需要在配置文件 上&#xff0c;增加 如下配置。 application 格式配置&#xff1a; spring.jackson.default-property-inclusionnon_null yml 格式配置&#xff1a; spring:jackson:default-property-inclusion: non_null注意&a…

美团财务科技后端一面:如何保证数据一致性?延时双删第二次失败如何解决?

更多大厂面试内容可见 -> http://11come.cn 美团财务科技后端一面&#xff1a;项目内容拷打 美团财务科技后端一面&#xff1a;项目相关面试题&#xff0c;主要包含 Zset、延时双删失败重试、热点数据解决、ThreadLocal 这几个方面相关的内容 由于前几个问题是对个人项目的…