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

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

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

相关文章

React中redux、react-redux、@reduxjs/toolkit状态管理库的使用方式

效果 下载依赖 npm install redux react-redux reduxjs/toolkit --save在src目录下创建文件 创建index.ts文件 import { configureStore } from reduxjs/toolkit import userSlice from ./userReducerconst store configureStore({reducer: {user: userSlice.reducer} }) //…

代码随想录算法训练营第四十三天| LeetCode 1049.最后一块石头的重量II、494. 目标和、474.一和零

一、LeetCode 1049.最后一块石头的重量II 文章讲解/视频讲解:https://programmercarl.com/1049.%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8FII.html#%E6%80%9D%E8%B7%AF 状态:已解决 1.思路 其实这个题跟上个题…

ssm056基于Java语言校园快递代取系统的设计与实现+jsp

校园快递代取系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本校园快递代取系统就是在这样的大环境下诞生,其可以帮助管理者在短…

4核8G配置服务器多少钱?2024年阿里云服务器700元1年价格便宜

4核8G配置服务器多少钱?2024年阿里云服务器700元1年价格便宜。阿里云4核8G服务器租用优惠价格700元1年,配置为ECS通用算力型u1实例(ecs.u1-c1m2.xlarge)4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选,CPU采…

Linux下的权限:论老流氓root的存在

文章目录 用户身份切换提权 权限管理文件访问者文件访问权限文件类型目录权限默认权限粘滞位 用户 Linux下有两中用户:超级用户(root)、普通用户 超级用户:可以在Linux系统下做任何事情,不受到限制普通用户&#xff…

Java PDF文件流传输过程中速度很慢,如何解决?

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…

VulnHub系列 DC-4靶机 渗透详细过程 | 红队打靶

VulnHub系列 DC-4靶机详细渗透测试过程 目录 VulnHub系列 DC-4靶机详细渗透测试过程一、将靶机导入到虚拟机当中二、渗透流程主机发现端口扫描Web渗透暴力破解命令执行反弹shellSSH暴力破解提权 一、将靶机导入到虚拟机当中 靶机地址: https://download.vulnhub.c…

Matlab|基于改进遗传算法的配电网故障定位

目录 1 主要内容 2 部分代码 3 部分程序结果 4 下载链接 1 主要内容 该程序复现文章《基于改进遗传算法的配电网故障定位》,将改进的遗传算法应用于配电网故障定位中, 并引入分级处理思想, 利用配电网呈辐射状的特点, 首先把整个配电网划分为主干支路和若干独立…

中国12.5米DEM地形瓦片数据免费领取!

之前向大家公开了中国34个省12.5米DEM地形瓦片数据的免费领取链接,大家对12.5米DEM数据的使用需求很强烈,领取也很积极,也有不少读者反馈能否提供全国范围的12.5米DEM地形瓦片数据,因为分省级地形瓦片数据想要合并成全国数据&…

ES-全文搜索

模糊查询: 写数据通过id路由到master分片 查询数据到一个节点,该节点会作为一个调度节点判断负载等情况将请求转发到真正节点(一般し轮询)

提升批量邮箱API发送效率:技巧与策略探讨

批量邮箱API发送邮件时如何提高发送效率?1、优化邮件内容和目标客户列表;2、利用邮件模板和个性化功能;3、合理设置发送时间和频率;4、使用A/B测试和数据分析;5、保持邮件列表更新和清洁。 一、优化邮件内容和目标客户…

CMEF | 澳鹏Appen精彩亮相第89届中国国际医疗器械博览会

4月14日,为期四天的第89届中国国际医疗器械博览会(CMEF)盛大收官。如今,人们的健康需求在人口老龄化等一系列因素的影响下持续增长,这意味着卫生系统也面对着更多具有复杂健康需求的患者。信息化、数字化、智能化已经成…

双指针的引入和深入思考(持续更新中)

目录 1.引入双指针 2.使用场景 3.例题引入 1.引入双指针 当我们需要维护某个区间性质的或者是求满足某些性质的区间的长度时,对于一个区间是由左右端点的,我们有简单的枚举左右端点的O()的时间的做法,当时在大多数题目中是不可行的&#…

20240329-1-SVM面试题

SVM面试题 1. SVM直观解释 SVM,Support Vector Machine,它是一种二分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;其还包括核技巧,这使它成为实质上的非线性分类…

OpenCV从入门到精通实战(二)——文档OCR识别(tesseract)

导入环境 导入必要的库 numpy: 用于处理数值计算。 argparse: 用于处理命令行参数。 cv2: OpenCV库,用于图像处理。 import numpy as np import argparse import cv2设置命令行参数 ap argparse.ArgumentParser() ap.add_argument("-i", "--imag…

计算机中的小数表示

文章目录 前言整数表示的缺陷定点小数定点小数加法乘法运算 浮点数IEEE754浮点数标准移码阶码的移码表示 IEEE754中的特殊点两个0非规格化数字正常浮点数无穷大NaN 浮点数简单举例浮点数一些其余特性浮点数计算不符合结合律浮点数舍入规则浮点数与整数之间的相互转换 总结 前言…

记录一次k8s pod之间ip无法访问,问题排查与定位

记录一次k8s pod之间ip无法访问,问题排查与定位 问题展现现象 node之间通信正常 部分node上的pod无法通信 排查有问题node 使用启动网络测试工具 环境准备 docker 数据库mysql 使用有状态副本集合 --- apiVersion: apps/v1 kind: StatefulSet metadata:anno…

生成对抗网络GAN的扩展应用理解

注:本文仅个人学习理解,如需详细内容请看原论文! 一、cycleGAN 1.整体架构: 将图片A通过生成器生成图片B,然后通过判别器判别图片B的真假;并且图片B通过另一个生成器生成A‘,让A和A’近似。 2…

C++ queue priority_queuestack 详解及模拟实现

1. stack的介绍和使用 1.1 stack的介绍 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容…

JVM垃圾回收与算法

1. 如何确定垃圾 1.1 引用计数法 在 Java 中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单 的办法是通过引用计数来判断一个对象是否可以回收。简单说,即一个对象如果没有任何与之关 联的引用,即…