分布式系统架构笔记

news/2024/11/6 2:55:59/文章来源:https://www.cnblogs.com/redwind/p/18410565

概述

能够识别与分布式系统的非功能性需求相关的指标和机制

能够识别和解释在对分布式系统进行建模时使用的各种视点。

能够在设计分布式系统时对架构样式进行适当的选择。

能够实现一个简单的分布式系统,考虑函数外属性。

能够分析架构模型并评估从不同角度呈现的分布式系统模型,以评估它们对各种非功能性需求的满足程度。

包含两部分:架构和系统

分布式系统的三部分:processing elements、communication network和software。

在去中心化的系统里,仍然有一部分“中心节点”

而在分布式系统中,完全不存在任何中心节点。

只要在去中心化系统中加一两条边,就可能使得整个系统变成分布式系统。

逻辑上中心化和物理上集中化的系统:

全局上没有时间、状态的观念(每个计算机不会去记录其他计算机的情况)

异质结构——跨平台

分布式系统的设计目标:

1. 资源共享

2. 分布式的透明性(注意定义,这里是说的对用户而言,看不出来系统实际上是分布式的)

 Relocation是系统发起让资源转移的

Migration是指在使用过程中,用户发起的转移,比如使用手机

3. 可规模性(Scalability)

3.1 规模可规模性:可以向系统添加更多用户和资源,但不会有明显的性能损失。

3.2 地理可规模性:用户和资源可能相距很远,但通信延迟可能很严重这一事实却很难被注意到。

3.3 管理可扩展性:即使跨越多个独立的管理机构,仍能轻松管理。

4. 公开性

网格计算(异质的计算机)、集群计算(同质的计算机)

开发时的一些错误假设:

架构

所谓的中间件层将应用程序与底层平台分离。

架构概念

概念、ISO/IEC/ICEE 42010/4+1模型

架构框架:用于描述在特定应用领域和/或利益相关者社区内建立的架构的约定、原则和实践

环境:决定系统所有影响的设置和环境的上下文

利益相关者:对系统持有关注的个人、团队、组织(或其类别)

对应关系:两个或多个架构描述元素之间已识别或命名的关系

关注点:对与其一个或多个利益相关者相关的系统的兴趣

方面:实体的特征或本质的一部分

规范:以完整、精确和可验证的方式识别实体的需求、设计、行为或其他预期特征的信息部分

利益相关者视角:思考利益实体的方式,尤其是与关注点相关的实体

架构视图:从特定系统关注点的角度表达系统架构的工作产品

acquirers:负责采购系统时的事务

assessors:负责考虑系统是否合规合法

communicators:通过文档解释系统

developers:构建开发系统

maintainers:维护系统(管理迭代)

suppliers:提供软硬件条件

support staff:协助用户在系统上运作

system administrators:部署后运行系统

testors:检查系统是否符合预期的成果

users:定义系统的功能、成果并使用

view:看到的东西

viewpoint:从哪看的

Kruchten view:

逻辑view、过程view、开发view、部署view

 用户用、开发者开发、系统管理者管理、系统工程师部署

RW Viewpoint:

 Context Viewpoint:

描述系统与其环境(人、系统、外部实体)之间的关系、依赖关系和交互。

解决问题:

1. 系统范围

2. 责任

3. 使用的数据

Functional Viewpoint:

描述系统的运行时功能元素及其职责、接口和主要交互。

解决问题:

1. 功能能力

2. 外部接口

3. 内部结构

4. 设计理念

Information Viewpoint:

描述架构存储、操作和分发信息的方式。

解决问题:

1. 信息结构

2. 内容和流程

3. 数据所有权、数量、有效性、生命周期和可访问性;交易管理(交易到底是啥?)

4. 恢复

5. 内部规范

Concurrency Viewpoint:

描述系统的并发单元(如进程和线程)、其功能以及所需的协调。

解决问题:

1. 任务结构

2. 进程间通信

3. 状态管理

4. 同步与重载入

5. 进程的创建和销毁

Development Viewpoint:

描述系统的开发和集成过程

解决问题:

1. 模块组织

2. 共同处理

3. 设计和测试标准化
4. 代码组织与检测

Deployment Viewpoint:

描述系统的部署环境,例如节点数、链路数、软件依赖关系等

解决问题:

1. 硬件

2. 第三方软件

3. 技术兼容性

Operational Viewpoint:

描述系统在生产环境中的操作方面,例如安装过程

解决问题:

1. 安装与升级

2. 监控运行情况

3. 配置管理

4. 资源管理

EFR:额外功能要求

非常希望可以使用该架构来查看这些问题是否得到满足

可访问性、可理解性、可用性、通用性、可操作性、简单性、移动性、游牧性、可移植性、准确性、效率、占用空间、响应性、可扩展性、可调度性、容错性、及时性、CPU利用率、延迟、吞吐量、并发性、灵活性、可变性、可进化性、可扩展性、可修改性、可定制性、可升级性、可扩展性、一致性、适应性、开放性、可组合性、互操作性、可集成性、责任性、完整性、简洁性、正确性、可测试性、可跟踪性、连贯性、可分析性、模块化、可重用性、可配置性、可分发性、可用性、机密性

架构风格

服务:

合同指定的实体的整体功能。

协议

一组正式的规则,规定实体之间的信息交换以及交互应如何进行。

规则规定

1. 消息格式

2. 有限状态机

3. 时间限制

4. 其他质量属性

四个特别的风格:

Layered

分层架构:只有上层的东西能够调用下层的东西

每层都应该有一定的功能,且有稳定的方式保证各相邻层之间能够稳定通信。

问题:过于依赖通信和下层

严格分层时只有n-1层

Client-server

客户端-服务器风格

动机:关注点分离、共享一些资源、保护和管理内容、延迟绑定、减少依赖

动态结构,服务器可以分布

服务器是被动的

客户端没有限制

缺点:

单个服务器可能成为性能瓶颈

服务器可能出现单点故障

Publish-subscribe

服务器主动,可能有中介,当数据可用且相关时发送数据

缺点:由于额外的间接性,延迟时间更大且波动更大。不适合硬实时约束。

Peer-to-peer

点对点

动机:共享资源和内容、社区合作、角色对称、并发性高
特征:加入社区,被动向其他host提供服务、积极使用其他host的服务。

有Super peer,为社区提供更多资源。

弱点:安全性、缺乏管理

时间耦合是指分布式系统的不同组件必须与特定时间或截止日期同步运行的情况

引用耦合是指分布式系统中组件或模块之间基于共享数据或引用的依赖关系

 云计算:硬件+软件分层

服务Client-server

虽然后续有关于REST等架构的题,但考试不会考,这部分包括:

REST

Batch

Pipe & filters

Service-oriented

Model View Controller

Blackboard

Virtual machine

Interpreter

系统

交互风格

 

层叠式协议和中间件:

Remote procedure call(远程过程调用)、消息导向的中间件

命名

服务发现

名称系统

分布式扁平化方案

分布式结构化方案

虚拟化

资源分配

资源整合(resource consolidation)

容器(container)

可扩展性

可扩展性的种类,以及如何评估他们

容错

系统错误容错及过程错误容错

复制及一致性

一致性

副本(replica)管理

 

分布式服务器(访问集群)

集群的目的:

1. 提高性能

2. 提高可靠性

3. 提高可用性

请求处理:

让第一层处理所有通信可能遇到瓶颈

增加一个服务器(交换机)来处理连接问题,不过响应可以直接返回给客户端

 

 

 请求调度:

 

 

对于Finger table,如果我们不能直接跳到这个数本身上,我们就跳到其后边存储其的点上(甚至于说,我们就应该跳到后面存储其的点上)

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

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

相关文章

【2024.11.05】所谓照片,不过是在时间长河里刻舟求剑罢了

玩摄影一年了,随便瞎写点感受好了 作为模特的感受 想成为一位摄影前就要先练习成为一位模特,这是很有必要的 我觉得九成以上的人难以做到面对镜头时表里如一 在镜头前多少都会紧张,显得不自然 除非是像我一样持续记录自我,已经适应了镜头的存在 而对于模特来说最好的照片是…

Alpha迭代阶段——第七周Scrum Meeting记录

1.Alpha阶段工作内容: 目前是项目调研、设计和游戏系统开发阶段,后续是游戏组件开发阶段。 主要工作为: (1)分析上周Scrum Meeting会议中的不足,总结本周的工作内容和不足,构思下一步的工作内容; (2)探讨游戏关卡的合理性,初步完成游戏关卡设计; (3)初步完成游戏…

19. 使用MySQL之插入数据

1. 数据插入 顾名思义,INSERT是用来插入(或添加)行到数据库表的。插入可以用几种方式使用:插入完整的行;插入行的一部分;插入多行;插入某些查询的结果。补充: 插入及系统安全: 可针对每个表或每个用户,利用MySQL的安全机制禁止使用INSERT语句,这将在第28章介绍 2. 插…

看懂 UML 类图

原文:看懂 UML 类图和时序图从一个示例开始 请看以下这个类图,类之间的关系是我们需要关注的:车的类图结构为<<abstract>>,表示车是一个抽象类; 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示; 小汽车为与 SUV 之间也…

linux 中awk命令实现按照 指定的字符对文本进行排序

001、[root@PC1 test1]# ls a.txt [root@PC1 test1]# cat a.txt ## 测试数据,对如下文本按照a、b进行排序输出 01 02b 03 04 05 06a 07 08 09 10b 11 12 13 14b 15 16 17 18a 19 20 [root@PC1 …

游戏关卡设计文档

关卡设计 关卡一:基础逻辑门练习 任务描述:在这个关卡中,学习如何使用基本的逻辑门(AND门和NOT门)来构建一个简单的“非与”逻辑门。 任务过程:理解逻辑门: 学习AND门的工作原理:只有当所有输入都为高电平时,输出才为高电平。 学习NOT门的工作原理:输出总是输入的…

【入门笔记】CSE 365 - Fall 2024之Computing 101(pwn.college)

真不会了,GDB把我榨干了,会了会回来填坑的【入门笔记】CSE 365 - Fall 2024之Computing 101(pwn.college) Your First Program 你的第一个程序 Your First Register 你的第一个寄存器 CPU的思维方式非常简单。 它移动数据,更改数据,基于数据做出决策,并基于数据采取行动…

Jenkins之代理节点搭建-随笔

背景: 最近在公司搭建Jenkins的CICD,Linux的代理节点,公司前辈已经搭建好了。这次由于需要一个Windows环境作为代理节点,执行UI自动化测试。 于是,就参考了教程搭建完了,花了一个小时吧,最近无聊,就在此简单写一下心得和感受,总体上很简单,遇到了一个坑,但是这个坑…

[SUCTF 2019]CheckIn

题目链接:[SUCTF 2019]CheckIn。 打开后,环境如下。可以看到,是一道文件上传题目,尝试上传 php 文件,发现存在检测。爆破其他可支持的 php 文件后缀无果。 尝试上传 .htaccess 文件,发现存在检测是否为图片的机制。通过加入 GIF 文件幻数后成功绕过检测图片的机制,但是这…

LIS系统与仪器进行通信

本文主要介绍医疗检测仪器与LIS系统之间的通信,两者之间的通信还是比较简单的,两者通过通信方式连接成功后,对接收到的数据按照特定的协议进行解析,拿到我们需要的数据保存到LIS系统,或者将LIS中的数据传到仪器上即可。 下面介绍一下比较常用的通信方式及协议。详细的协议…

0-1搭建 账务自动化集成系统

对财务人员来说,记账是一项非常繁琐又麻烦的工作,每天/月重复,要求还高;如果能实现自动化入账,绝对能提高不少工作效率。这篇文章,我们就来讨论下这个问题。在企业的财务管理中,会计工作是核心环节,会计是基于经济业务活动的根据会计法、会计准则等法律法规,通过记账、…

清结算中台系统设计

在当今复杂的金融交易环境中,清结算中台作为核心的基础设施,扮演着至关重要的角色。它不仅能够确保交易的准确性、安全性和及时性,还能提高金融机构的运营效率,降低风险。 本文将深入探讨清结算中台的定义、流程、模型以及产品功能,为读者全面展示这一重要金融工具的设计与…