当前位置: 首页 > article >正文

分布式系统架构介绍

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.kler.cn/a/232240.html

相关文章:

  • 基本数据类型和包装类型的区别、缓存池、自动拆箱装箱(面试题)
  • 《Django 5 By Example》阅读笔记:p105-p164
  • 借助Excel实现Word表格快速排序
  • NVMe(Non-Volatile Memory Express)非易失性存储器访问和传输协议
  • 决策树基本 CART Python手写实现
  • 蓝桥杯竞赛单片机组备赛【经验帖】
  • Kafka系列之:Kafka集群同时设置基于时间和日志大小两种方式保存Topic的数据
  • [当人工智能遇上安全] 11.威胁情报实体识别 (2)基于BiGRU-CRF的中文实体识别万字详解
  • ubuntu22.04@laptop OpenCV Get Started: 002_reading_writing_videos
  • 【龙年大礼】| 2023中国开源年度报告!
  • 大模型2024规模化场景涌现,加速云计算走出第二增长曲线
  • 从Unity到Three.js(安装启动)
  • STM32输出PWM波控制180°舵机
  • VSCode 文件夹增加右键打开
  • 图数据库neo4j入门
  • ChatGPT在肾脏病学领域的专业准确性评估
  • (delphi11最新学习资料) Object Pascal 学习笔记---第4章第2.5节(重载和模糊调用)
  • Linux学习
  • C#调用WechatOCR.exe实现本地OCR文字识别
  • PostgreSQL 与 MySQL 相比,优势何在?
  • 基于蒙特卡洛的电力系统可靠性分析matlab仿真,对比EDNS和LOLP
  • 服务器性能监控管理方法及工具
  • 登山 ——最长上升子序列
  • 第9章 SpringBoot综合项目实战——个人博客系统
  • @PostMapping/ @GetMapping等请求格式
  • JavaScript基础第五天