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

高层设计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.mzph.cn/news/181116.shtml

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

相关文章

解锁 ElasticJob 云原生实践的难题

发生了什么 最近在逛 ElasticJob 官方社区时发现很多小伙伴都在头疼这个 ElasticJob 上云的问题,ElasticJob 本就号称分布式弹性任务调度框架,怎么在云原生环境就有了问题了呢,这就要从 Kubenertes 和 ElasticJob 的一些状态化说起。 有意思的…

linux(2)之buildroot使用手册

Linux(2)之buildroot配置toolchain Author:Onceday Date:2023年11月27日 漫漫长路,才刚刚开始… 参考文档: Buildroot - Making Embedded Linux Easy 文章目录 Linux(2)之buildroot配置toolchain1. 构建配置1.1 配置config生成…

【LeetCode:1670. 设计前中后队列 | 数据结构设计】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

微信小程序仿网易严选(附精选源码32套,涵盖商城团购等)

商城主要实现的功能 首页、专题、分类、购物车、我的小程序授权登陆获取用户信息首页包含品牌制造页、品牌制造详情页面、新品首发页面、人气推荐页面、各分类列表商品详情页面,包含常见问题、大家都在看商品列表、加入购物车、收藏商品、立即购买、下订单、选择收…

C语言进阶指南(11)(指针数组与二维数组)

*欢迎来到博主的专栏——C语言进阶指南 博主id:reverie_ly 文章目录 N级指针指针数组指针数组与二维数组数组指针作为函数的参数 N级指针 指针变量是一个存放地址的变量,在C语言中,每个变量都会有一个地址值。所以指针变量也有一个地址。 …

高防服务器和高防CDN的区别是什么?

现今大环境下攻击问题愈发严峻,许多网站有遇到被攻击导致网站崩溃,资源消耗的问题,那么这时候高防就是给为站长,企业等的第一选择了,那边目前高防CDN和高防服务器这两种抵御DDoS攻击的两种主流防御,那种会更…

Mysql 高级日志binlog、undoLog、redoLog 详解

数据更新流程与日志记录: undoLog: binLog: redoLog:

本地MinIO存储服务通过Java程序结合Cpolar内网穿透进行远程访问

[本地MinIO存储服务通过Java程序结合Cpolar内网穿透进行远程访问] 前言 MinIO是一款高性能、分布式的对象存储系统,它可以100%的运行在标准硬件上,即X86等低成本机器也能够很好的运行MinIO。它的优点包括高性能、高可用性、易于部署和管理、支持多租户…

【古月居《ros入门21讲》学习笔记】16_tf坐标系广播与监听的编程实现

目录 说明: 1. 实现过程(C) 创建功能包(C) 创建tf广播器代码(C) 创建tf监听器代码(C) 配置tf监听器与广播器代码编译规则 编译并运行 编译 运行 2. 实现过程&a…

基于STC12C5A60S2系列1T 8051单片机的IIC总线器件24C02记录单片机上电次数应用

基于STC12C5A60S2系列1T 8051单片机的IIC总线器件24C02记录单片机上电次数应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示器LCD1602简单介绍IIC通信简单介…

微信小程序生成二维码并保存到本地方法

微信小程序生成二维码请保存到本地方法 官方weapp-qrcode插件 github链接 功能完成样子 wxml <view class"qrcode"><canvas style"width: 275px; height: 275px;" canvas-idmyQrcode></canvas> </view> <view class" …

day66

今日回顾内容 web框架 django 路由控制 视图层 web框架 一、什么是web框架 Web框架&#xff08;Web framework&#xff09;是一种开发框架&#xff0c;用来支持动态网站、网络应用和网络服务的开发。这大多数的web框架提供了一套开发和部署网站的方式&#xff0c;也为web行…

resty-http库爬虫程序代码示例

lua -- 导入需要的库 local http require "resty.http" local io require "io" -- 创建一个客户端 local client http.new() -- 设置HTTP客户端的 client:set_proxy(proxy_host, proxy_port) -- 执行HTTP GET请求&#xff0c;获取网页内容 local res…

C语言数据结构之顺序表(上)

前言&#xff1a; ⭐️此篇博文主要分享博主在学习C语言的数据结构之顺序表的知识点时写的笔记&#xff0c;若有错误&#xff0c;还请佬指出&#xff0c;一定感谢&#xff01;制作不易&#xff0c;若觉得内容不错可以点赞&#x1f44d;收藏❤️&#xff0c;这是对博主最大的认可…

source: command not found错误的解决方法

偶遇的一个问题&#xff0c;因为在网上没有找到对应的解决办法&#xff0c;可能是属于个案&#xff0c;在此记录备忘&#xff0c;同时供大家参考。 问题现象&#xff1a; 执行命令 source /etc/profile时报错&#xff1a; bash: “source: command not found... 问题定位和…

内衣洗衣机和手洗哪个干净?小型洗衣机质量排名

这两年内衣洗衣机可以称得上较火的小电器&#xff0c;小小的身躯却有大大的能力&#xff0c;一键可以同时启动洗、漂、脱三种全自动为一体化功能&#xff0c;在多功能和性能的提升上&#xff0c;还可以解放我们双手的同时将衣物给清洗干净&#xff0c;让越来越多小伙伴选择一款…

如何恢复已删除的照片 ?适用于 Windows 的Android 数据恢复软件值得尝试

“我丢失了 Android 手机上的照片&#xff0c;有人告诉我使用恢复程序来找回所有手机数据。我使用的是 Windows 10 和华为 手机&#xff0c;对于 Windows最有效的 Android 数据恢复是什么&#xff1f;” Android 恢复程序用于检索丢失或删除的文件&#xff0c;如照片、联系人、…

SimpleCG小游戏开发系列(1)--扫雷

一、前言 前面我们学习了SimpleCG的游戏开发框架,从本篇开始,我们用一系列小游戏的开发来加深对框架的了解.我们先以windows的经典游戏--扫雷,作为首个例子。游戏预览如下 二、框架搭建 因为游戏程序的大体框架差不多&#xff0c;所以我们可以搭建一个通用的主程序。如下所示&a…

导致Facebook广告投放不成功的原因

Facebook是全球最大的社交媒体平台之一&#xff0c;也是众多跨境卖家选择广告投放的首选平台&#xff0c;但也还是会有很多跨境卖家在Facebook上推广效果不佳。那么本文小编讲一下导致Facebook广告投放不成功的原因以及相应解决方法。 1、受众群体太少 Facebook有个要求就是广告…

Java之顺序栈实现数制转换问题

一、前言&#xff1a; 这是怀化学院的&#xff1a;Java数据结构中的一道中等编程题(此方法为博主自己研究&#xff0c;问题基本解决&#xff0c;若有bug欢迎下方评论&#xff0c;我会第一时间改进代码&#xff0c;谢谢&#xff01;) 后面其他编程题只要我写完成功&#xff0c;会…