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

从浅入深 学习 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 : 分布式链路追踪。

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

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

相关文章

Mac下brew安装php7.4

这里作者挂了梯子,所以很流畅! brew的下载,可参考另外一篇博文~Homebrew 安装与卸载 1、将第三方仓库加入brew brew tap shivammathur/php2、安装指定版本的PHP brew install php7.43、替换Mac自带PHP环境并刷新环境变量 -> …

基于simulink的模拟锁相环和数字锁相环建模与对比仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 模拟锁相环(PLL)的基本原理 4.2 数字锁相环(DPLL)的基本原理 5.完整工程文件 1.课题概述 模拟锁相环和数字锁相环建模的simulink建模,对…

OpenHarmony UI动画-recyclerview_animators

简介 带有添加删除动画效果以及整体动画效果的list组件库 下载安装 ohpm install ohos/recyclerview-animatorsOpenHarmony ohpm 环境配置等更多内容,请参考如何安装OpenHarmony ohpm 包 使用说明 引入组件库 import { RecyclerView } from "ohos/recycler…

Qt/C++音视频开发70-无感切换通道/无缝切换播放视频/多通道流畅切换/不同视频打开无缝切换

一、前言 之前就写过这个方案,当时做的是ffmpeg内核版本,由于ffmpeg内核解析都是代码实现,所以无缝切换非常完美,看不到丝毫的中间切换过程,看起来就像是在一个通道画面中。其实这种切换只能说是取巧办法,…

排序算法之计数排序

目录 一、简介二、代码实现三、应用场景 一、简介 算法平均时间复杂度最好时间复杂度最坏时间复杂度空间复杂度排序方式稳定性计数排序O(nk )O(nk)O(nk)O(k)Out-place稳定 稳定:如果A原本在B前面,而AB,排序之后A仍然在B的前面; 不…

稀碎从零算法笔记Day52-LeetCode:从双倍数组中还原原数组

题型:数组、贪心 链接:2007. 从双倍数组中还原原数组 - 力扣(LeetCode) 来源:LeetCode 题目描述 一个整数数组 original 可以转变成一个 双倍 数组 changed ,转变方式为将 original 中每个元素 值乘以 …

记录ubuntu20.04安装nvidia-525.85.05显卡驱动(学习笔记2024.4.15、4.16)

电脑:华硕天选X2024 显卡:4060Ti i5-14400F 架构:x86_64 我需要使用Linux系统使用IsaacSim进行仿真,所以安装的都是IsaacSim中的推荐版本。 一.对新鲜的电脑进行分盘 电脑刚到手,900多个G全在C盘里,给它…

学习笔记(4月18日)vector底层模拟实现(1)

1.迭代器 vector实际上是由迭代器进行维护的,关于迭代器是什么,为什么要叫这个名字,后面的学习会逐渐了解,现在先将迭代器是作为指针即可。 vector底层有三个迭代器,用来起到容量、数组头、元素个数的作用。 同时为…

数字零售力航母-看微软如何重塑媒体

数字零售力航母-看微软如何重塑媒体 - 从2024全美广播协会展会看微软如何整合营销媒体AI技术和AI平台公司 2024年,微软公司联合英伟达总司,赞助全美广播协会展会。本次展会微软通过搭建一个由全面的合作伙伴生态系统支持的可信和安全的平台,…

RIP最短路实验(华为)

思科设备参考:RIP最短路实验(思科) 一,技术简介 RIP(Routing Information Protocol,路由信息协议)是一种基于距离矢量的内部网关协议,工作原理是每个路由器周期性地向邻居路由器发…

【网站项目】新生报到系统小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Spring Boot | Spring Boot “缓存管理“

目录: 一、Spring Boot 默认 "缓存" 管理 :1.1 基础环境搭建① 准备数据② 创建项目③ 编写 "数据库表" 对应的 "实体类"④ 编写 "操作数据库" 的 Repository接口文件⑤ 编写 "业务操作列" Service文件⑥ 编写 "applic…

Vue2进阶之Vue2高级用法

Vue2高级用法 mixin示例一示例二 plugin插件自定义指令vue-element-admin slot插槽filter过滤器 mixin 示例一 App.vue <template><div id"app"></div> </template><script> const mixin2{created(){console.log("mixin creat…

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

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

展览展会媒体媒体邀约执行应该怎么做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 展览展会邀请媒体跟其他活动邀请媒体流程大致相同&#xff0c;包括 制定媒体邀约计划&#xff0c;准备新闻稿&#xff0c;发送邀请函&#xff0c;确认媒体参会&#xff0c;现场媒体接待及…

神经网络中正则化和正则化率的含义

在神经网络中&#xff0c;正则化是一种用于防止模型过拟合的技术。过拟合是指模型在训练数据上表现得很好&#xff0c;但是对于未见过的新数据&#xff0c;其泛化能力却很差。正则化通过在损失函数中添加一个额外的项来惩罚模型的复杂度&#xff0c;从而鼓励模型学习更加简单、…

OpenHarmony UI动画-lottie

简介 lottie是一个适用于OpenHarmony的动画库&#xff0c;它可以解析Adobe After Effects软件通过Bodymovin插件导出的json格式的动画&#xff0c;并在移动设备上进行本地渲染。 下载安裝 ohpm install ohos/lottieOpenHarmony ohpm 环境配置等更多内容&#xff0c;请参考如何…

浅写个登录(无js文件)

全部代码如下&#xff0c;无需编写wxss文件&#xff0c;渲染都在style里面&#xff1a; <view style"height: 250rpx;width: 100%;"> <!-- 背景图片 --><view style"position: absolute; background-color: antiquewhite; height: 250rpx;width…

Java学习-Module的概念和使用、IDEA的常用设置及常用快捷键

Module的概念和使用 【1】在Eclipse中我们有Workspace (工作空间)和Project (工程)的概念&#xff0c;在IDEA中只有Project (工程)和Module (模块)的概念。 这里的对应关系为: IDEA官网说明: An Eclipse workspace is similar to a project in IntelliJ IDEA An Eclipse pr…

2、MATLAB入门常用命令

一、退出和中断 exit和quit&#xff1a;结束MATLAB会话。程序完成&#xff0c;如果没有明确保存&#xff0c;则变量中的数据丢失。 Ctrl c&#xff1a;中断一个MATLAB任务。例如&#xff0c;当MATLAB正在计算或打印时&#xff0c;中断一个任务&#xff0c;但会话并没有结束。…