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

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

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

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

什么是高层设计文档?

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

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

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

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

高层设计文档的范围

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

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

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

高层设计的组成部分

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

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

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

faa686b9eabab3d38501a716156b9592.png
Uber-System-Design-High-Level-Architecture.png

高层设计的组件

高层设计的目的

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

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

高层设计的特点

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

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

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

b4cd93d6a6f6d402c131d63e1e526c6b.png
Roadmap-HLD.png

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

1. 容量估算:

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

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

f4a6de85e8d756ddaa3b415a9aaad667.png
Behavior-of-A-Server.png

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

2. HTTP和HTTPS及其方法:

1.GET2.PUT3.POST

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

1.使用 Websockets2.使用轮询

3. Websockets:

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

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

4. 轮询:

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

a76d4eeec82f439544374e1e87382b1e.png
Short-polling-vs-long-Polling.png

短轮询与长轮询

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

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

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

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

例子:实时流媒体

1e3aff8e1ff865e3728be0629be270bf.png
Server-Sent-Events-(SSE).png

服务器发送事件(SSE)

6. 过滤

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

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

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

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

7. 速率限制:

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

56fa468f89c6974586d85590457c0650.png
rate-limiter.png

速率限制

8. 容错性:

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

•复制•冗余•可用性

9. 分页:

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

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

2649d0684c13ed517ca8f41e83fe2bc0.png
Paging-and-Filtering-Data.png

分页

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

10. 日志记录:

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

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小技术君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值