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

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

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

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

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

什么是高层设计文档?

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

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

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

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

高层设计文档的范围

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

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

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

高层设计的组成部分

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

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

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

高层设计的组件

高层设计的目的

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

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

高层设计的特点

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

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

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

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

1. 容量估算

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

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

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

2. HTTP和HTTPS及其方法:

  • GET
  • PUT
  • POST

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

  • 使用 Websockets
  • 使用轮询

3. Websockets:

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

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

4. 轮询:

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

短轮询与长轮询

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

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

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

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

例子:实时流媒体

服务器发送事件(SSE)

6. 过滤

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

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

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

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

7. 速率限制:

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

速率限制

8. 容错性:

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

  • 复制
  • 冗余
  • 可用性

9. 分页:

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

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

分页

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

10. 日志记录:

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

责任编辑:赵宁宁 来源: 小技术君
相关推荐

2015-03-26 10:05:59

UI设计师UI设计

2021-11-29 10:27:24

设计模式程序员

2020-12-08 11:17:41

微内核架构设计

2012-07-23 10:36:46

工作流

2011-12-22 15:33:05

Web

2024-02-26 10:44:29

2015-05-15 13:21:22

URL系统设计

2010-01-22 10:36:25

C++语言

2012-01-09 14:48:15

响应式Web

2021-07-29 14:42:55

设计模式Java

2012-08-03 09:09:59

网页设计设计

2020-05-15 09:55:09

设计技术栈程序员

2020-03-18 09:31:47

设计模式软件

2011-10-27 13:37:51

网页设计

2021-06-18 12:39:12

数据驱动设计设计师收集数据

2020-11-24 10:21:14

人工智能机器学习技术

2014-06-05 14:46:05

设计设计师

2024-06-28 09:59:35

2012-07-31 10:07:07

架构系统架构架构设计

2024-06-25 15:21:57

点赞
收藏

51CTO技术栈公众号