分布式系统架构介绍

news2024/9/23 16:30:11

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.coloradmin.cn/o/1440541.html

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

相关文章

汇编笔记 01

小蒟蒻的汇编自学笔记,如有错误,望不吝赐教 文章目录 笔记编辑器,启动!debug功能CS & IPmovaddsub汇编语言寄存器的英文全称中英对照表muldivandor 笔记 编辑器,启动! 进入 debug 模式 debug功能 …

C语言:分支与循环

创造不易,友友们给个三连吧!! C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分…

SQL拆分字段内容(含分隔符)

问题描述: 在做数据迁移的过程中,我们希望对表中的某个字段根据分隔符进行拆分,得到多条数据,原代码有点意思,因此记录一下。 我们假设某条数据如下: IDSTRS1公司名称不能小于四个字,行业类别…

春运也要“信号升格”:中兴通讯助运营商打造高铁精品网

一年一度的春运,承载了游子的思乡情。据官方预计,今年春运跨区域人员流动量将达到90亿人次,创下历史新高,铁路、公路、水路、民航等营业性客运量全面回升,其中铁路预计发送旅客4.8亿人次,日均1200万人次&am…

网络设备如何巡检?这些命令必不可少

一、查看交换机的端口使用情况: dis interface brief查看交换机的哪个端口是万兆端口,以及端口状态,那个端口在使用。 如下图,使用这个命令。 其中端口0/0/1与端口0/0/2处于使用中。其它接口没有使用;如果在实际项目…

[Python进阶] 制作动态二维码

11.1 制作动态二维码 二维码(QR code)是一种二维条形码(bar code),它的起源可以追溯到20世纪90年代初。当时,日本的汽车工业开始使用一种被称为QR码的二维条码来追踪汽车零部件的信息。 QR码是Quick Respo…

机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节)

机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节) 1、前言2、本篇内容3、代码记录3.1、新建se23.2、生成坐标系3.3、将T1表示的变换绘制3.4、完整绘制代码3.5、获取点*在坐标系1下的表示3.6、相对坐标获取完整代码 4、结语 1、前言 工作需要&a…

JRebel激活-nginx版本

nginx转发流量(代替其他网上说的那个工具) proxy_pass http://idea.lanyus.com; 工具激活 填写内容说明: 第一行的激活网址是:http://127.0.0.1:8888/ 正确的GUID。GUID 可以通过专门的网站来生成(点击打开&#…

问题:创业者在组建创业团队时,在个人特征和动机方面更应该注重创业者的( ) #知识分享#微信#媒体

问题:创业者在组建创业团队时,在个人特征和动机方面更应该注重创业者的( ) 参考答案如图所示

C++分支语句

个人主页:PingdiGuo_guo 收录专栏:C干货专栏 大家新年快乐,今天,我们来了解一下分支语句。 文章目录 1.什么是分支语句 1.if语句 基本形式 用法说明 练习 2.if-else语句 基本形式 用法说明 练习 3.switch语句 基本形式…

推荐研发度量思码逸的研发度量工具及视频教学

目前国内做研发度量中,思码逸的研发度量工具的确做的不错,网址是:思码逸-专业的软件研发效能度量分析平台 看到一个不错的介绍视频:《让数据说话,高效盘点企业研发效能》, 地址是:视频课程&…

bert+np.memap+faiss文本相似度匹配 topN

目录 任务 代码 结果说明 任务 使用 bert-base-chinese 预训练模型将文本数据向量化后,使用 np.memap 进行保存,再使用 faiss 进行相似度匹配出每个文本与它最相似的 topN 此篇文章使用了地址数据,目的是为了跑通这个流程,数…

Mac使用AccessClient打开Linux堡垒机跳转闪退问题解决

登录公司的服务器需要使用到堡垒机,但是mac使用AccessClient登录会出现问题 最基础的AccessClient配置 AccessClient启动需要设置目录权限,可以直接设置为 权限 777 chmod 777 /Applications/AccessClient.app注: 如果不是这个路径,可以打开终端,将访达中…

uniapp设置不显示顶部返回按钮

一、pages文件中,在相应的页面中设置 "titleNView": {"autoBackButton": false} 二、对应的页面文件设置隐藏元素 document.querySelector(.uni-page-head-hd).style.display none

Tomcat组件架构与数据流

一、背景与简介 Tomcat我们都知道是一个开源的、实现了大部分Java EE、Servlet、JSP规范的Servlet容器, 允许我们将实现了Serlvet接口的Web程序war包进行部署运行。 但是你有对Tomcat做过细致的学习么? 我相信大部分同学和我一样,之前也是只会进行简单使用&#x…

RisingWave 中文用户文档上线,阅读更高效!

为满足广大中文社区用户、开发者及流处理技术爱好者的需求,RisingWave 用户文档中文社区版今天上线了! 中文版文档的推出,旨在为广大用户提供更便捷、高效的阅读体验,帮助大家深入理解并有效使用 RisingWave,发挥其更…

Python:流程控制

4.1 顺序结构 在任何编程语言中最常见的程序结构就是顺序结构。顺序结构就是程序从上到下一行行地执行,中间没有任何判断和跳转。 如果Python程序的多行代码之间没有任何流程控制,则程序总是从上往下依次执行,排在前面的代码先执行&#xf…

1897_野火FreeRTOS教程阅读笔记_链表

1897_野火FreeRTOS教程阅读笔记_链表 全部学习汇总: g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 之前我自己通过直接啃代码的方式对FreeRTOS也算是有了一点理解了,这次趁着些许闲暇翻看一下野火的FreeRTOS教程。一者算是一种复习;二者可能对自…

【数据结构】二叉树的顺序结构及链式结构

目录 1.树的概念及结构 1.1树的概念 1.2树的相关概念 ​编辑 1.3树的表示 1.4树在实际中的运用(表示文件系统的目录树结构) 2.二叉树概念及结构 2.1二叉树的概念 2.2现实中的二叉树 ​编辑 2.3特殊的二叉树 2.4二叉树的性质 2.5二叉树的存储结…

手把手教你设计接口自动化测试用例:提取接口信息并分析

随着市场需求的变化,大部分企业在招聘测试人员时,都会提出接口自动化测试的相关要求,为什么会这样呢? 目前,软件构架基本上都是前后端分离的,软件的主要功能由服务端提供。从整个软件测试市场来看&#xf…