分布式系统架构介绍

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://xiahunao.cn/news/2776351.html

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

相关文章

uniapp的配置和使用

①安装环境和编辑器 注册小程序账号 微信开发者工具下载 uniapp 官网 HbuilderX 下载 首先先下载Hbuilder和微信开发者工具 (都是傻瓜式安装),然后注册小程序账号: 拿到appid: ②简单通过demo使用微信开发者工具和…

Linux开发工具的使用 (gcc/g++ | gdb)

目录 一、gcc/g 1.关于gcc/g 2.gcc如何使用 gcc选项: 预处理: 编译: 汇编: 连接: 函数库是什么: 函数库分为动态库和静态库两种 二、调试器gdb 1.关于gdb 2. gdb的使用 gdb选项: Linux是一个广泛用于开发的操作系统&…

关于数字图像处理考试

我们学校这门科目是半学期就完结哦,同学们学习的时候要注意时间哦。 选择题不用管,到时候会有各种版本的复习资料的。 以下这些东西可能会是大题的重点: 我根据平时代码总结的,供参考 基本操作: 1.读图:…

新书速览|PyTorch 2.0深度学习从零开始学

实战中文情感分类、拼音汉字转化、中文文本分类、拼音汉字翻译、强化学习、语音唤醒、人脸识别 01 本书简介 本书以通俗易懂的方式介绍PyTorch深度学习基础理论,并以项目实战的形式详细介绍PyTorch框架的使用。为读者揭示PyTorch 2.0进行深度学习项目实战的核心技…

Springboot+vue的社区智慧养老监护管理平台设计与实现(有报告),Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的社区智慧养老监护管理平台设计与实现(有报告),Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的社区智慧养老监护管理平台设…

GPIO输入

GPIO输入 实现的功能:按键控制LED、光敏传感器控制蜂鸣器 按键:常见的输入设备,按下导通,松开断开 按键抖动:由于按键内部使用的是机械弹簧片来进行通断的,所以在按下和松手的瞬间会伴随有一连串的抖动。 …

Linux匿名管道

目录 1.原理 1.直接原理 2.本质原理 2.管道接口 3.管道中的四种情况 1.读写端正常,管道如果为空,读端就要堵塞 2.读写端正常,管道如果被写满,写端就要堵塞 3.读端正常,写端关闭,读端就会读到0&#…

图书系统的Web实现(含源码)

源码地址https://gitee.com/an-indestructible-blade/project 注意事项: BorrowBooksWeb\src\main\resources路径下的application.yml文件里面的url,username,password这三个属性和自己的数据库保持一致。 浏览器访问url:http://127.0.0.1:…

three.js 匀速动画(向量表示速度)

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div>1. 匀速动画(向量表示速度)</div…

网络学习:数据链路层VLAN原理和配置

一、简介&#xff1a; VLAN又称为虚拟局域网&#xff0c;它是用来将使用路由器的网络分割成多个虚拟局域网&#xff0c;起到隔离广播域的作用&#xff0c;一个VLAN通常对应一个IP网段&#xff0c;不同VLAN通常规划到不同IP网段。划分VLAN可以提高网络的通讯质量和安全性。 二、…

Unity类银河恶魔城学习记录5-1.5-2 P62-63 Creating Player Manager and Skill Manager源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili PlayerManager.cs using System.Collections; using System.Collections.G…

【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏3(附项目源码)

最终效果 文章目录 最终效果系列目录前言随着地面法线旋转在地形上随机生成动物不同部位颜色不同最终效果源码完结系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第24篇中,我们将探索如何用unity制作一…

B2080 计算多项式的值(洛谷)

题目描述 假定多项式的形式为 … x1&#xff0c;请计算给定单精度浮点数 x 和正整数 n 值的情况下这个多项式的值。多项式的值精确到小数点后两位&#xff0c;保证最终结果在 double 范围内。 输入格式 输入仅一行&#xff0c;包括 x 和 n&#xff0c;用单个空格隔开。 输…

前端滚动组件分享

分享一个前端可视化常用的卡片列表滚动组件&#xff0c;常用于可视化项目左右两侧的卡片列表的滚动。效果如下图所示&#xff1a; 组件描述 当鼠标移入滚动区域时&#xff0c;滚动行为停止当鼠标再次离开时&#xff0c;滚动继续 源码展示 <template><div ref"…

【RPA】智能自动化的未来:AI + RPA

伴随着人工智能&#xff08;AI&#xff09;技术的迅猛进步&#xff0c;机器人流程自动化&#xff08;RPA&#xff09;正在经历一场翻天覆地的变革。AI为RPA注入了新的活力&#xff0c;尤其在处理复杂任务和制定决策方面。通过融合自然语言处理&#xff08;NLP&#xff09;、机器…

uni-app x,一个纯原生的Android App开发工具

uni-app x&#xff0c;下一代uni-app&#xff0c;一个神奇的产品。 用vue语法、uni的组件、api&#xff0c;以及uts语言&#xff0c;编译出了kotlin的app。不再使用js引擎和webview。纯纯的kotlin原生app。 uni-app x&#xff0c;让“跨平台开发性能不如原生”的这条曾广为流…

CSP-202109-1-数组推导

CSP-202109-1-数组推导 解题思路 如果 currentValue 与 previousValue 相同&#xff0c;说明这个值不是一个独特的新值&#xff0c;因此只将它加到 sumTotal 上。如果 currentValue 与 previousValue 不相同&#xff0c;说明这是一个新的独特值&#xff0c;因此既将它加到 su…

EMC学习笔记(二十三)降低EMI的PCB设计指南(三)

双层板电源分配 1.单点与多点分布2.星型分布3.创建网格平面4.旁路和磁珠5.将噪声保持在芯片附近 tips&#xff1a;资料主要来自网络&#xff0c;仅供学习使用。 1.单点与多点分布 在一个真正的单点配电系统中&#xff0c;每个有源元件都有自己独立的电源和地&#xff0c;这些…

让AI更“智能”的Agent,究竟是什么?

引言 我相信对许多对AI感兴趣的读者来说&#xff0c;“Agent”是个听起来既熟悉又陌生的词汇&#xff0c;而由于ChatGPT引发的浪潮又将Agent的概念推上顶峰&#xff0c;正好借助这个机会我来好好解释一下这个词汇。 Agent的基本含义 在AI领域&#xff0c;Agent基本可以被理解…

蓝桥杯备赛Day9——链表进阶

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5]示例 2: 输入:head = [1], n = 1 输出:[]示例 3: 输入:head = [1,2], n = 1 输出:[1]提示: 链表中结点的数目为 sz1 <= sz <= 300 &l…