分布式系统架构介绍

dbc466cecc4b448c8ae275ebc3b3ab76.jpg1、为什么需要分布式架构?

 

 

增大系统容量:单台系统的性能瓶颈,多台机器才能应对大规模的应用场景,所以就需要我们的应用支撑平台具备分布式架构。

 

加强系统的可用:为了满足业务的SLA要求,需要通过分布式架构消除单点故障,提升系统的可用性。

 

其他因素:增加功能模块复用、通过模块化加快开发效率、增强系统扩展性。

 

 

 

2、和单体应用相比分布式架构的优缺点是什么?

 

  传统单体架构 分布式服务化架构

新功能开发 需要时间 容易开发和实现

部署 不经常且容易部署 经常发布,部署复杂

隔离性 故障影响范围大 故障影响范围小

架构设计 难度小 难度级数增加

系统性能 响应时间快,吞吐量小 响应时间慢,吞吐量大 

 系统运维 运维简单 运维复杂 

 新人上手 学习曲线大(应用逻辑) 学习曲线大(架构逻辑) 

 技术 技术单一且封闭 技术多样且开放 

 测试和查错 简单 复杂 

 系统扩展性 扩展性很差 扩展性很好 

 系统管理 重点在于开发成本 重点在于服务治理和调度 

 

 

3、分布式系统存在的问题

 

架构设计变得复杂(尤其是其中的分布式事务);

部署单个服务会比较快,但是如果一次部署多个服务,流程会变得复杂;

系统的吞吐量会变大,但是响应时间会变长;

运维复杂度会因为服务变多而变得很复杂;

架构复杂导致学习曲线变大;

测试和查错的复杂度增大;

技术多元化,这会带来维护和运维的复杂度;

管理分布式系统中的服务和调度变得困难和复杂。

总结:分布式系统架构的难点在于系统设计,以及管理和运维。所以分布式架构解决了“单点”和“性能容量”的问题,却新增了其他的问题。这就需要我们用各式各样的技术和手段来解决这些问题。

 

 

 

4、分布式系统的发展

 

 

 

 从上图可以看到面向服务的架构可以分为以下三个阶段:

 

20世纪90年代前,是单体架构,软件模块高度耦合(这张图同样也说明了有的 SOA 架构其实和单体架构没什么两样,因为都是高度耦合在一起的)。

2000 年左右出现了比较松耦合的 SOA 架构,这个架构需要一个标准的协议或是中间件来联动其它相关联的服务(如 ESB)。 这样一来,服务间并不直接依赖,而是通过中间件的标准协议或是通讯框架相互依赖。 

2010 年后,出现了微服务架构,这个架构更为松耦合。每一个微服务都能独立完整地运行(所谓的自包含),后端单体的数据库也被微服务这样的架构分散到不同的服务中。而它和传统 SOA 的差别在于,服务间的整合需要一个服务编排或是服务整合的引擎(这个编排和组织引擎可以是工作流引擎,也可以是网关。当然,还需要辅助于像容器化调度这样的技术方式,如 Kubernetes)。

马丁·福勒对微服务描述:https://martinfowler.com/articles/microservices.html

 

 

 

5、微服务的优缺点和解决思路

 

微服务的出现使得开发速度变得更快,部署快,隔离性高,系统的扩展度也很好,但在集成测试、运维和服务管理等方面就比较麻烦了。所以需要一套比较好的微服务PaaS平台,提供各种配置服务、服务发现、智能路由、控制总线,并且还需要提供各式各样的部署和调度方式。

 

 

 

6、思考

 

1)分布式系统和微服务架构的关系是什么?

 

1>.概念

 

微服务架构是一种基于组件化、微分化的设计方法,它将应用程序拆分成小型、独立的服务单元,每个服务单元都具有自己的数据存储、逻辑处理和接口。微服务架构旨在提高应用程序的可伸缩性、可维护性和可扩展性,同时降低开发和维护的成本;

分布式系统是指由多个独立组件(或者计算机节点)组成的系统,这些组件可以通过网络相互通信,实现数据存储、处理和传输等功能。分布式系统可以被看作是一种大型的、分布式的数据库或网络应用程序,它通常由多个节点组成,每个节点都有自己的数据和处理能力;

分布式架构是分布式系统的一种实现方式,它将分布式系统中的各个组件通过网络通信连接起来,实现数据的存储、处理和传输等功能。分布式架构的设计需要考虑多个方面,包括数据的分布式存储、负载均衡、容错机制等。

2>.分布式系统架构有以下几个主要优点:

 

高可用性:分布式系统可以将应用程序或数据分布在多个节点上,从而提高系统的可用性。即使一个节点失败,整个系统仍然可以正常运行,并及时切换到备用节点上;

 

可扩展性:分布式系统可以轻松地增加或删除节点来扩展系统的处理能力和容量,从而满足不同的需求;

 

可靠性:分布式系统可以将数据和应用程序分布在多个节点上,从而提高数据的安全性和可靠性。此外,分布式系统还支持容错机制,可以在节点失败时自动切换到备用节点上,从而保证系统的正常运行;

 

灵活性:分布式系统可以根据不同的需求和场景进行灵活的设计和配置,以实现最佳的性能和可用性。

 

分布式系统架构也有一些挑战,例如网络延迟、数据一致性、分布式事务等问题。为了解决这些问题,分布式系统架构通常采用一些常用的技术和工具,例如分布式缓存、消息队列、分布式事务等。

 

3>.微服务和分布式的区别

 

实践的角度看:可以说微服务架构是分布式架构,反之则未必成立;

微服务重在解耦合,使每个模块都独立。分布式重在资源共享与加快计算机计算速度;

分布式:分散压力。微服务:分散能力;

区别分布式的方式是根据不同机器不同业务:

将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务。

微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。

微服务更加强调单一职责、轻量级通信(HTTP)、独立性并且进程隔离。

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

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

相关文章

深度学习(13)--PyTorch搭建神经网络进行气温预测

一.搭建神经网络进行气温预测流程详解 1.1.导入所需的工具包 import numpy as np # 矩阵计算 import pandas as pd # 数据读取 import matplotlib.pyplot as plt # 画图处理 import torch # 构建神经网络 import torch.optim as optim # 设置优化器 1.2.读取并处理数据…

第五篇:MySQL常见数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型 三个表格都在此网盘中,需要者可移步自取,如果觉得有帮助希望点个赞~ MySQL常见数据类型表 数值类型 (注:decimal类型举例,如1…

DevOps:CI、CD、CB、CT、CD

目录 一、软件开发流程演化快速回顾 (一)瀑布模型 (二)原型模型 (三)螺旋模型 (四)增量模型 (五)敏捷开发 (六)DevOps 二、走…

【开源】SpringBoot框架开发天沐瑜伽馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

【Kubernetes】kubectl top pod 异常?

目录 前言一、表象二、解决方法1、导入镜像包2、编辑yaml文件3、解决问题 三、优化改造1.修改配置文件2.检查api-server服务是否正常3.测试验证 总结 前言 各位老铁大家好,好久不见,卑微涛目前从事kubernetes相关容器工作,感兴趣的小伙伴相互…

【Kubernetes】在k8s1.24及以上版本基于containerd容器运行时测试pod从harbor拉取镜像

基于containerd容器运行时测试pod从harbor拉取镜像 1、安装高版本containerd2、安装docker3、登录harbor上传镜像4、从harbor拉取镜像 1、安装高版本containerd 集群中各个节点都要操作 yum remove containerd.io -y yum install containerd.io-1.6.22* -y cd /etc/containe…

《UE5_C++多人TPS完整教程》学习笔记2 ——《P3 多人游戏概念(Multiplayer Concept)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P3 多人游戏概念(Multiplayer Concept)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译…

数据结构:并查集讲解

并查集 1.并查集原理2.并查集实现3.并查集应用4.并查集的路径压缩 1.并查集原理 在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中…

分享88个鼠标特效,总有一款适合您

分享88个鼠标特效,总有一款适合您 88个鼠标特效下载链接:https://pan.baidu.com/s/1ljcxwgXGpw7baiufUGJjZA?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不…

5G NR 频率计算

5G中引入了频率栅格的概念,也就是小区中心频点和SSB的频域位置不能随意配置,必须满足一定规律,主要目的是为了UE能快速的搜索小区;其中三个最重要的概念是Channel raster 、synchronization raster和pointA。 1、Channel raster …

Hive正则表达式

Hive版本:hive-3.1.2 一、Hive的正则表达式概述 正则表达式是一种用于匹配和操作文本的强大工具,它是由一系列字符和特殊字符组成的模式,用于描述要匹配的文本模式。 Hive的正则表达式灵活使用解决HQL开发过程中的很多问题,本篇文…

H12-821_26

26.下列选项中,哪些路由前缀满足下面的IP-Prefix条件? A.20.0.1.0/24 B.20.0.1.0/23 C.20.0.1.0/25 D.20.0.1.0/28 答案:ACD 注释: 前缀列表可以匹配路由前缀和网络掩码。 ip ip-prefix test index 10 permit 20.0.0.0 16 greater-equal 24 less-equal…

Zephyr NRF7002 实现AppleJuice

BLE的基础知识 ble的信道和BR/EDR的信道是完全不一样的。但是范围是相同的,差不多也都是2.4Ghz的频道。可以简单理解为空中有40个信道0~39信道。两个设备在相同的信道里面可以进行相互通信。 而这些信道SIG又重新编号: 这个编号就是把37 38 39。 3个信道…

Seurat - 聚类教程 (1)

设置 Seurat 对象 在本教程[1]中,我们将分析 10X Genomics 免费提供的外周血单核细胞 (PBMC) 数据集。在 Illumina NextSeq 500 上对 2,700 个单细胞进行了测序。可以在此处[2]找到原始数据。 我们首先读取数据。 Read10X() 函数从 10X 读取 cellranger 管道的输出&…

Linux network namespace 访问外网以及多命名空间通信(经典容器组网 veth pair + bridge 模式认知)

写在前面 整理K8s网络相关笔记博文内容涉及 Linux network namespace 访问外网方案 Demo实际上也就是 经典容器组网 veth pair bridge 模式理解不足小伙伴帮忙指正 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已…

数据结构第十四天(树的存储/双亲表示法)

目录 前言 概述 接口: 源码: 测试函数: 运行结果: 往期精彩内容 前言 孩子,一定要记得你的父母啊!!! 哈哈,今天开始学习树结构中的双亲表示法,让孩…

H12-821_74

74.在某路由器上查看LSP,看到如下结果: A.发送目标地址为3.3.3.3的数据包时,打上标签1026,然后发送。 B.发送目标地址为4.4.4.4的数据包时,不打标签直接发送。 C.当路由器收到标签为1024的数据包,将把标签…

MySQL数据库⑦_复合查询+内外链接(多表/子查询)

目录 1. 回顾基本查询 2. 多表查询 2.1 笛卡尔积初步过滤 3. 自连接 4. 子查询 4.1 单行子查询 4.2 多行子查询 4.2 多列子查询 4.2 from子句中使用子查询 5. 合并查询 6. 内外链接 6.1 内连接 6.2 左外链接 6.2 右外连接 本篇完。 1. 回顾基本查询 先回顾一下…

架构整洁之道-软件架构-展示器和谦卑对象、不完全边界、层次与边界、Main组件、服务

6 软件架构 6.9 展示器和谦卑对象 在《架构整洁之道-软件架构-策略与层次、业务逻辑、尖叫的软件架构、整洁架构》有我们提到了展示器(presenter),展示器实际上是采用谦卑对象(humble object)模式的一种形式&#xff…

【深度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目

作者推荐 视频算法专题 本博文涉及知识点 深度优先搜索 树 图论 分类讨论 LeetCode2973. 树中每个节点放置的金币数目 给你一棵 n 个节点的 无向 树,节点编号为 0 到 n - 1 ,树的根节点在节点 0 处。同时给你一个长度为 n - 1 的二维整数数组 edges…