什么是高层设计 - 学习系统设计

news2024/11/27 13:44:06

高层设计HLD指的是整体系统设计,包括系统架构和设计的描述,是一种通用的系统设计,包括:

•系统架构•数据库设计•对系统、服务、平台和模块之间关系的简要描述。

高层设计HLD也被称为宏观级别设计

什么是高层设计文档?

HLD文档包括数据流、流程图和数据结构,以帮助开发人员了解和实现当前系统的设计意图。 此文档负责:

•解释系统组件和操作之间的连接,描述逻辑以及•为系统的每个模块所需的体系结构设计(用于系统的功能和流程)

根据功能需求。这是因为客户业务需求被转化为我们作为咨询工作或架构设计、安全性和网络的一部分所说的解决方案,我们将其称为高层设计。

HLD 不包括物理要求、端口详细信息、VLAN等许多细节。

高层设计文档的范围

高层设计文档呈现系统的结构,如应用/数据库架构、应用流程和技术架构。与低层设计不同,高层设计文档可能使用一些非技术术语,低层设计应该是严格的技术术语。

注意:制定HLD是解决方案架构师的责任。在创建HLD之后,有经验的专业设计人员根据HLD的标准转向LLD。LLD将提供关于软件实体如何工作的详细信息,而HLD只关注在组织中放置哪些软件实体以进行高效操作。 以下是在设计HLD时从解决方案架构师那里预期的约束:

1.收集功能和非功能需求2.成本限制(一旦组织规模扩大,这变得非常重要)3.对系统的一致性、可用性、可扩展性和性能的程度有强烈的约束。

高层设计的组成部分

为了提供对整个解决方案的总体概览,HLD应包含以下两个元素:

1.软件实体的属性和特性。2.不同软件实体(组件、模块、类等)之间的关系。

图解: 让我们通过下面的视觉辅助来描绘高层设计,以可视化组件及其关系,如下所示:

7708b8667ce02fddb1b9bd3ac68f9df4.png
Uber-System-Design-High-Level-Architecture.png

高层设计的组件

高层设计的目的

这个高层设计(HLD)的目的是:为合适的模型添加必要的详细描述。这旨在帮助满足运营需求,并可用作模块之间交互的参考手册。

基本上,HLD是功能需求和信息流跨资产或组件的技术表示。

高层设计的特点

•包含每个设计方面的图表在所有设计HLD中(基于业务需求和预期结果)。•包含硬件、软件接口以及用户界面的描述。•用户典型过程的工作流程详细说明,以及性能规格。•项目的架构和设计包含在用户HLD中。

如何设计可扩展的高层设计(HLD)系统

为了设计任何高层次系统,需要按照顺序列出某些术语,以便连接各个方面以了解:

0e2c7ef539ade5bcadb47bf8a659f612.png
Roadmap-HLD.png

如何设计可扩展的高层设计(HLD)系统

1. 容量估算:

在本文中,我们将研究我们需要在高层次设计中掌握的概念,因此我们将提出一条路线图。对于专业人士来说,路线图尤为重要,因为这些图表帮助我们完全理解实时服务在高层次上如何扩展。

我们还展示了服务器的特征行为,通过吞吐量和延迟在系统内进行测量,如下所示:

c66688b4a4018f7bc37ff39b194c4333.png
Behavior-of-A-Server.png

通过并发比较吞吐量和延迟:服务器的行为

2. HTTP和HTTPS及其方法:

1.GET2.PUT3.POST

提示:从服务器发送数据给客户端有两种方式:

1.使用 Websockets2.使用轮询

3. Websockets:

在客户端-服务器架构中,我们向服务器发送请求,服务器将其发送回来,这样通信就发生了。但是,在设计系统时,我们面临的最大问题是我们是否能够实现客户端-服务器模型,因为我们不能等待服务器响应。在这种情况下,Websockets扮演了至关重要的角色,解决了这些问题,使我们能够进行实时通信。它们在几乎每个需要设计的系统中被广泛使用,因为我们不能让我们的系统等待响应。考虑一个实时文本消息服务的例子,例如 Slack 和 Whatsapp,这些服务需要保持连接。

另外,在返回动态值的系统中也会使用,例如股票价格系统、食品和杂货送货系统,在这些系统中我们返回的是从卖家到消费者的实时产品信息。

4. 轮询:

轮询是一种从服务器发送和接收数据的技术,就像我们在 Websockets 中所做的一样。轮询有两种类型,分别是长轮询和短轮询。在短轮询中,客户端发送请求。

0dfaf219fdf4291c593f010b73d2a57e.png
Short-polling-vs-long-Polling.png

短轮询与长轮询

在短轮询中,客户端发送请求,服务器会立即按固定间隔发送数据,无论数据是否更新。在长轮询中,服务器等待客户端请求以响应,并且仅在有新数据可用或数据更新时才会响应。在长轮询中,客户端发送请求,如果没有新信息可用或数据未更新,服务器将等待而不会响应。

提示:长轮询优于短轮询,因为系统发送的请求更少。 在设计系统时,请考虑如果没有客户端发出请求,服务器会发生什么。

5. 服务器发送事件(SSE):

它是专门从服务器向客户端进行单向通信的设计系统中的一种方式。

例子:实时流媒体

04c56ef6393b0d6e8ea4201e099d3829.png
Server-Sent-Events-(SSE).png

服务器发送事件(SSE)

6. 过滤

控制室 API 支持对返回数组资源的端点进行过滤、分页和排序。

过滤机制可以过滤所需的资源,排序机制将资源排序,并且分页机制然后返回这些排序过的资源的特定范围。此主题为您提供有关过滤和排序 API 请求结果以及处理从 API 请求返回的大型结果集的分页的详细信息。

注意:排序和过滤支持子字符串。例如,如果要搜索名称中具有 "fin" 的机器人或文件,则输入 "fin" 作为搜索条件。将显示所有名称中包含 "fin" 的机器人和文件,例如 Finance、Finder、DeltaFinance 和 Dolfin。

通配符不支持搜索和过滤机器人或文件。 过滤允许您对返回的资源集合应用布尔条件,以便将集合子集化为仅对条件为真的那些资源。在控制室 API 过滤中,最基本的操作是将字段与给定值进行比较。可以使用相等比较、范围比较或逻辑。使用以下运算符将字段与常量值进行比较。

7. 速率限制:

速率限制器限制发送者在一段时间内可以完成的事件数量,限制发送者在一定时间内发送请求的数量。一旦达到阈值限制,进一步的请求将被阻止,如下图所示:

971b6211a9cfa62db55fd196d85cecf7.png
rate-limiter.png

速率限制

8. 容错性:

无论我们设计的系统有多好,总是存在硬件问题、软件问题(例如内存不足)或人为错误导致的故障和故障容忍。在这种情况下,我们需要通过以下方式提供韧性:

•复制•冗余•可用性

9. 分页:

在HLD阶段,我们不关心代码,但非常关注数据库设计,因此我们追踪数据如何进行。现

在,在设计高层次系统时,分页的概念进入了角色,我们需要从数据库中过滤出特定的数据,基于要求,例如地理因素。例如:苹果公司,它根据地理位置分页出特定产品。

f0403504eeb9c7cd8fe5fdf8483f88be.png
Paging-and-Filtering-Data.png

分页

分页是通过 GET 请求实现的,在分页中有两个边界:

10. 日志记录:

日志文件记录软件应用程序中发生的事件的详细信息。这些详细信息可能包括微服务、交易、服务操作或对调试事件流有帮助的任何内容。日志记录对于监视应用程序的流程非常重要。

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

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

相关文章

中国信通院发布《中国算力发展指数白皮书》(2023)

加gzh“大数据食铁兽”,回复“20231129”,获取材料完整版 导读 2023 年白皮书在 2022 年的基础上,加强了全球和我国算力发展的研究,客观评估我国整体、各省份及各城市现阶段的算力发展水平进一步给出我国算力二十强市榜单&…

什么是线程安全问题?如何确保线程安全?进来看看就明白了!!

🌈🌈🌈今天给大家分享的是:什么是线程安全,在程序中多线程并发执行的时候,是否会产生线程不安全问题,以及如何解决线程不安全问题。 清风的CSDN博客 🛩️🛩️🛩️希望我的…

小红书广告投放形式有哪些,软文形式特点是什么?

现在广告的形式多种多样,针对不同的投放形式,面对的用户群体和投放渠道也都不一样。在平台上进行广告投放,可以快速提升品牌曝光和销量转化。本次将围绕小红书广告投放形式有哪些,软文形式特点是什么展开讨论,希望能对…

今日份推荐、无广告、超实用的5款软件

​ 大家好,我又来啦,今天给大家带来的几款软件,共同特点都是无广告、超实用,大家观看完可以自行搜索下载哦。 1.键盘锁定工具——Iwck ​ Iwck是一款简单实用的键盘锁定工具,可以让你在需要的时候暂时停止键盘的所有…

【23真题】官方出错题,复试不算分!信号学不好,就考它!

今天分享的是23年广西民族大学861的信号与系统试题及解析。广西民族我之前做择校分析的时候说过,考生进入复试之后,专业课会扣掉!不算分,只对公共课排名!而且专业课简单,但是官方今年出了好几道错题&#x…

陪诊系统:基于自然语言处理的患者沟通创新

医疗领域的数字化转型正日益引入创新技术,其中基于自然语言处理(NLP)的陪诊系统成为提升患者沟通的一项关键技术。本文将深入研究这一领域,介绍陪诊系统如何借助NLP实现患者沟通的创新,并提供一个简单的Python代码示例…

CNAS认可是什么?CNAS软件测试报告如何获取?

一、CNAS认可是什么?   CNAS认可是指中国合格评定国家认可委员会的认可程序。CNAS是中国最高级别的认可机构,负责审核和认可符合国家标准的实验室、检测机构和认证机构。通过CNAS认可,机构可以获得国际公认的认可证书,证明其测试结果和认证…

【华为数通HCIP | 网络工程师】821刷题日记-BFD和VRRP 及重点(1)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

人工智能_机器学习055_拉格朗日乘子法_拉格朗日乘数法的原理介绍_流程详解---人工智能工作笔记0095

上一节我们已经演示了把SVM支持向量机的分割线,画出来,并且,我们也推导了SVM支持向量机的公式,但是支持向量机的公式,是带有条件的对吧,带有条件就算起来比较麻烦 可以看到现在我们要可以用,拉格朗日乘数法,将 有等式约束条件的优化问题 转换为 无约束优化问题,把有条件转换为…

Vue diff 算法探秘:如何实现快速渲染

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

During handling of the above exception, another exception occurred解决方案

During handling of the above exception, another exception occurred解决方案 前言解决方案总结 前言 今天在写python读取图片中的内容的脚本的时候,常用的图像处理库包括Pillow和OpenCV。以下是使用Pillow库读取图片中的计算公式的示例代码: from P…

cocos creator-碰撞检测

碰撞检测文档 刚体自行选择,刚体正常设置分组、tag,tag用于区分是哪个物体被碰撞了 正常在一个node下挂载脚本就行 注意:Builtin 2D 物理模块只会发送 BEGIN_CONTACT 和 END_CONTACT 回调消息。ccclass(TestContactCallBack) export class …

C语言--根据成绩判断等级

一.题目描述 如果学生的成绩小于60分&#xff0c;那么输出不及格 如果学生的成绩大于60分小于85分&#xff0c;那么输出良好 如果学生的成绩大于85分&#xff0c;那么输出优秀 二.代码实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> //根据成绩打印等级 //scor…

哪里可了解低代码数据可视化开发平台?

如果想要提升办公协作效率&#xff0c;可以用什么样的平台助力实现这一目标&#xff1f;其实&#xff0c;随着市场竞争的日益加剧&#xff0c;低代码技术平台的应用价值也逐渐凸显出来&#xff0c;其可视化、易操作、灵活便利等优势特点&#xff0c;是很多中大型企业倾向于使用…

3 测试驱动的Spring Boot应用程序开发数据层示例

文章目录 用户故事数据模型选择数据库SQL与NoSQLH2、Hibernate和JPA Spring Boot Data JPA依赖关系和自动配置Spring Data JPA技术栈数据源&#xff08;自动&#xff09;配置 实体存储库存储User和ChallengeAttempt显示最近的ChallengeAttempt服务层控制器层用户界面 小结 文章…

教学音频怎么扫码播放?音频在线生成二维码的教学

教学音频文件怎么做成扫码播放&#xff1f;现在将英语听力、教学内容做成音频是很常见的一种形式&#xff0c;为了更好的让他人获取内容&#xff0c;很多人会将音频生成二维码之后分享给他人&#xff0c;扫码就可以听音频。那么当我们有多个音频需要同时放入一个二维码中&#…

SQL server-excel数据追加到表

参考文章&#xff1a;SQL server 2019 从Excel导入数据_mssql2019 导入excel数据-CSDN博客 将excel数据导入到SQL server数据库的详细过程 注意&#xff1a;第一行数据默认为数据库表中的字段&#xff0c;所以这个必须要有&#xff0c;否则无法映射导入 问题1&#xff1a;ADD…

linux磁盘已满,查看哪个文件占用多

使用df -h查看磁盘空间占用情况 使用sudo du -s -h /* | sort -nr命令查看那个目录占用空间大 然后那个目录占用多 再通过sudo du -s -h /var/* | sort -nr 一层层排查&#xff0c;找到占用文件多的地方 如果通过以上方法没有找到问题所在&#xff0c;那么可以使用 lsof |…

PHP:js中怎么使用PHP变量,php变量为数组时的处理

方法一&#xff1a;使用内嵌 PHP 脚本标记 1、简单的拼接 使用内嵌的 PHP 脚本标记 <?php ?> 将 PHP 变量 $phpVariable 的值嵌入到 JavaScript 代码中。 <?php $phpVariable "Hello, World!"; ?><script> // 将 PHP 变量的值传递给 JavaS…

初刷leetcode题目(11)——数据结构与算法

&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️&#x1f636;‍&#x1f32b;️…