# 从浅入深 学习 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.hqwc.cn/news/630479.html

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

相关文章

ASCII 码值表

字符ASCII码值048149250351452553654755856957 大写字母A-Z对应的ASCII码值:65-90 小写字母a-z对应的ASCII码值:97-122 小写字母-32大写字母 ch-32;//将ch小写->大写 以上是常用的关系,不用死记忆,对照表格,可以方便理解编程。 将字符…

NAND数据恢复的方案

NAND Flash是固态硬盘(SSD)的核心数据存储。然而,NAND Flash因其物理特性和工作原理,存在一定的内在脆弱性,尤其是在数据存储的长期可靠性方面。 比特错误是指在读取NAND Flash时,原本存储的二进制位&#…

20232937文兆宇 2023-2024-2 《网络攻防实践》实践六报告

20232937文兆宇 2023-2024-2 《网络攻防实践》实践六报告 1.实践内容 (1)动手实践Metasploit windows attacker 任务:使用metasploit软件进行windows远程渗透统计实验 具体任务内容:使用windows Attacker/BT4攻击机尝试对wind…

JDK8、JDK11、JDK17和JDK21这几个版本更新的主要特性

文章目录 1.JDK82.JDK113.JDK174,JDK21 1.JDK8 JDK8是Java的一个重大更新版本,引入了一系列新特性和改进,主要包括: Lambda表达式:Lambda表达式允许我们以简洁、函数式的方式编写代码,使代码更易于理解和维护。-Stream…

WordPress的全面解析:为什么它是创建博客和网站的首选

在当前的数字化时代,无论是个人博客还是企业网站,都需要一个强大而灵活的平台以支撑其内容和用户交互。WordPress作为全球最流行的内容管理系统(CMS),以其强大的功能、灵活的定制性和广泛的用户基础,成为了…

状态压缩DP题单

P1433 吃奶酪&#xff08;最短路&#xff09; dp(i, s) 表示从 i 出发经过的点的记录为 s 的路线距离最小值 #include<bits/stdc.h> #define int long long using namespace std; const int N 20; signed main() { int n; cin >> n;vector<double>x(n 1),…

储能逆变器测试负载箱基础认识

储能逆变器测试负载箱是专门用于测试储能逆变器的设备&#xff0c;它能够模拟真实的负载情况&#xff0c;对储能逆变器进行全面的性能测试。这种设备在新能源领域&#xff0c;特别是太阳能和风能领域有着广泛的应用。 储能逆变器将储存的电能转换为交流电&#xff0c;然后输出给…

Leetcode算法训练日记 | day27

一、组合总和 1.题目 Leetcode&#xff1a;第 39 题 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 c…

java 红黑树

01.红黑树的定义&#xff1a; 每一个结点有五个属性&#xff1a;

SQL Server Management Studio 显示行号

前言 在使用 SQL Server Management Studio (SSMS) 进行数据库管理和查询时&#xff0c;能够看到代码的行号是非常有用的。这可以帮助您更容易地定位代码错误、讨论特定的代码行&#xff0c;或者在执行长查询时快速找到特定行。在本文中&#xff0c;我将向您展示如何在 SSMS 中…

Redis中的Lua脚本(二)

Lua脚本 创建排序辅助函数 为了防止带有副作用的函数令脚本产生不一致的数据&#xff0c;Redis对math库的math.random函数和math.randomseed函数进行了替换。对于Lua脚本来说&#xff0c;另一个可能产生不一致数据的地方是哪些带有不确定性质的命令&#xff0c;比如对于一个集…

面试八股——线程

进程与线程的对比 线程的创建方式⭐ 继承Thread类 实现Runnable接口 实现Callable类 适用于需要获取返回值的线程。 线程池创建线程 Callable与Runnable的区别 1. 首先Runnable的run方法是没有返回值的&#xff0c;Callable的call方法有返回值。 2. Runnable不能向外抛出异常…