你必须知道的 50 个系统设计术语

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情

目录

1.可扩展性

2. 负载均衡器

3. 微服务

4. CAP 定理

5. 分片

6. 延迟

7.吞吐量

8.缓存

9.内容分发网络(CDN)

10. REST API

11. GraphQL

12. 酸

13. 基础

14. NoSQL

15. SQL

16. 数据库索引

17.复制

18. 故障转移

19. API 网关

20.服务网格

21.无服务器计算

22.事件驱动架构

23. 单体架构

24.分布式系统

25. 消息队列

26. 发布/订阅模型

27. 数据分区

28. 水平扩展

29. 垂直扩展

30. 速率限制

31. 断路器模式

32.数据一致性

33. 最终一致性

34. 强一致性

35. 集装箱化

36. Kubernetes

37. 自动缩放

38. 多租户

39. 减载

40. 幂等性

41. 法定人数

42. 编排

43. 编舞

44. 服务注册表

45. API 速率限制

46. 数据仓库

47.数据湖

48. OLAP

49. OLTP

50.大数据

系统设计面试表现始终是验证应聘者是否能够提出可扩展且高效的系统的关键因素。了解主要术语肯定有助于取得好成绩。以下是 50 个必须了解的系统设计面试术语,我们将通过定义和工作示例进行解释,并提供其他学习资源。

1.可扩展性

  • 定义:它是系统通过添加资源来支持增加的负载的能力。
  • 示例:添加更多服务器来处理日益增加的网络流量。

2. 负载均衡器

  • 定义:将传入的网络流量分配到多台服务器,以使任何一台服务器都不承担大量负载。
  • 示例:使用 AWS 弹性负载均衡器 (ELB) 服务在多个 EC2 实例之间平衡网络流量负载。

3. 微服务

  • 定义:它是一种架构模式,强制将应用程序构建为松散耦合的服务集合。
  • 示例:将单体应用程序分解为负责用户管理、处理付款和发送通知的独立服务。

4. CAP 定理

  • 定义:在分布式系统中,最多只能获得三个保证中的两个:一致性、可用性和分区容忍性。
  • 示例:在分布式数据库设计中,何时权衡一致性和可用性——反之亦然。

5. 分片

  • 定义:为了更好地管理,它涉及将大型数据库分解为较小的部分(称为分片)。
  • 示例:根据地理区域对用户数据库进行分片。

6. 延迟

  • 定义:这被定义为数据从 A 点传输到 B 点所需的时间。
  • 示例:测量通过聊天应用程序传递消息的延迟。

7.吞吐量

  • 定义:系统在一定时间范围内处理的数据量的度量
  • 示例:Web 服务器在一秒钟内处理的请求。

8.缓存

  • 定义:任何用于存储数据以避免将来对相同数据的请求并快速提供服务的硬件或软件组件。
  • 示例:对重复的数据库查询实现 Redis 缓存。

9.内容分发网络(CDN)

  • 定义:地理上分散的服务器系统,根据用户访问的地理位置向用户显示网页内容。
  • 示例:使用 Cloudflare CDN 加快网页加载速度。

10. REST API

  • 定义:一种旨在构建使用 HTTP 请求访问和操作数据的 Web 服务的架构风格。
  • 示例:根据 REST(表述性状态转移)原则设计社交媒体 API。

11. GraphQL

  • 定义:它是一种用于查询数据的语言,因此比 REST 更加强大、高效和灵活。
  • 示例:使用 GraphQL 在单个请求中查询用户信息。

12. ACID

  • 定义:确保可靠处理数据库事务的一组属性。这些属性是原子性、一致性、隔离性和持久性。
  • 示例:确保银行交易具有 ACID 属性可防止数据损坏。

13. 基础

  • 定义:ACID 的替代方案,强调可用性和分区容忍度,而不是严格一致性。基本上是可用的、软状态的、最终一致的系统。
  • 示例:设计高可用性、最终一致的 NoSQL 数据库。

14. NoSQL

  • 定义:一种数据库类型,旨在促进以关系数据库中使用的表格关系以外的方式建模的数据的存储和检索。
  • 示例:使用 MongoDB 作为基于文档的数据存储。

15. SQL

  • 定义:它是用于在关系数据库中存储、操作和检索数据的标准语言。
  • 示例:编写 SQL 查询以从关系数据库获取数据。

16. 数据库索引

  • 定义:它是一种数据结构技术,允许快速搜索和访问数据库中的数据。
  • 例如:在用户ID列上创建索引,以提高搜索速度。

17.复制

  • 定义:在组成分布式数据库系统的多个数据库中复制和维护数据库对象的过程。
  • 示例:它涉及使用复制允许数据库在不同的地理位置具有高可用性。

18. 故障转移

  • 定义:一种备用运行模式,在主系统组件丢失的情况下,系统组件的功能由其他系统组件接管。
  • 示例:当您的互联网应用程序的服务器发生故障时,内置自动故障转移到备用服务器的功能。

19. API 网关

  • 定义:位于 API 前端的服务器,接收 API 请求、应用限制和安全策略,然后将其转发到后端服务。
  • 示例:使用 AWS API Gateway 管理 API。

20.服务网格

  • 定义:用于促进微服务之间服务到服务通信的专用基础设施层。
  • 示例:将Istio集成为服务网格,用于管理微服务交互。

21.无服务器计算

  • 定义:一种云计算实现,“允许云提供商动态分配机器资源”。
  • 示例:使用 AWS Lambda 运行后端代码,无需在您这边进行任何服务器配置。

22.事件驱动架构

  • 定义:一种软件架构范例,鼓励生成、检测、使用和对一般事件做出反应。
  • 示例:使用 Apache Kafka 设计一个微服务之间进行事件通信的系统。

23. 单体架构

  • 定义:一种软件架构,其中所有元素都适合单个应用程序并作为单个服务运行。
  • 示例:旧的传统企业应用程序构建为单个大型单元。

24.分布式系统

  • 定义:联网计算机上的组件通过传递消息相互通信并协调其操作的模型。
  • 示例:设计像 Hadoop 这样的分布式文件系统。

25. 消息队列

  • 定义:此方法允许在无服务器和微服务架构中进行异步服务到服务通信。
  • 示例:使用 RabbitMQ 在服务之间对消息进行排队。

26. 发布/订阅模型

  • 定义:一种消息传递模式,其中发送者(发布者)以抽象的方式发布消息,使得其中任何一个消息都可以被接收者访问,而发送者甚至不必知道目标接收者(订阅者)的身份。
  • 示例:使用 Google Cloud Pub/Sub 的通知系统。

27. 数据分区

  • 定义:将数据库划分为更小的、可管理的部分。
  • 示例:按日期对数据库中的表进行分区,以允许超快速执行查询。

28. 水平扩展

  • 定义:通过在系统中添加更多机器或节点来增加容量。
  • 示例:添加更多 Web 服务器来处理不断增加的用户流量。

29. 垂直扩展

  • 定义:通过 CPU 或 RAM 为现有机器升级,使其功能更加强大。
  • 示例:升级服务器的 RAM,以便它可以同时处理更多请求。

30. 速率限制

  • 定义:控制网络接口控制器发送或接收的流量速率。
  • 示例:限制 API 以防止滥用行为。

31. 断路器模式

  • 定义:现代软件开发中使用的设计模式,用于检测故障并封装防止故障不断重复发生的逻辑。
  • 示例:使用微服务架构中的断路器处理失败的远程服务调用。

32.数据一致性

  • 定义:确保数据在多个实例中相同且没有损坏。
  • 示例:通过数据库的多个副本维护用户数据的一致性。

33. 最终一致性

  • 定义:分布式计算中使用的一致性模型,旨在实现高可用性,指出系统更新最终将传播并被所有节点反映。
  • 示例:Amazon DynamoDB 为读取操作提供最终一致的模型。

34. 强一致性

  • 定义:一种一致性模型,确保每次读取都能获得给定数据单元的最新写入。
  • 示例:在金融交易系统中使用强一致性。

35. 集装箱化

  • 定义:基本上,这是指将应用程序及其依赖项封装到容器中以在任何计算环境中运行。
  • 示例:使用 Docker 容器化应用程序,以便在各种环境中部署,例如开发、测试、生产等。

36. Kubernetes

  • 定义:一个自动化应用程序容器部署、扩展和运行过程的开源平台。
  • 示例:使用 Kubernetes 运行和部署容器化应用程序。

37. 自动缩放

  • 定义:根据用户负载自动调整计算资源的数量。
  • 示例:利用 AWS EC2 Auto Scaling 功能动态调整实例数量。

38. 多租户

  • 定义:软件应用程序的单个实例为多个消费者/客户提供服务的架构。
  • 示例: SaaS 应用程序(例如 Salesforce)利用多租户为不同类别的客户提供服务。

39. 减载

  • 定义:在高负载下,减少一些需求或降低服务以维持整个系统的健康。
  • 示例:这将在高峰流量期间关闭所有非必要的服务。

40. 幂等性

  • 定义:某些数学和计算机科学运算的属性,指出重复多次会产生相同的效果。
  • 示例:HTTP DELETE 请求是幂等的。

41. Quorum

  • 定义:提交分布式事务所需的最小投票数。
  • 示例:基本上,基于仲裁的复制可确保分布式数据库中存在一致性。

42. Orchestration

  • 定义:一种服务交互模式,其中中央协调器控制服务之间的交互。
  • 示例:使用工作流引擎来管理一些多步骤业务流程。

43. Choreography

  • 定义:一种服务交互模式,其中每个服务都是独立的,并通过事件与其他服务交互;不会有任何协调员或编排者。
  • 示例:微服务按照编排模式通过事件总线进行通信。

44. 服务注册表

  • 定义:跟踪微服务实例的数据库。
  • 示例:在微服务架构中使用 Eureka 服务注册表。

45. API 速率限制

  • 定义:它意味着控制客户端在一定时间范围内可以对 API 发出多少个请求。
  • 示例:将 API 请求限制为每分钟 100 个,以防止滥用。

46. 数据仓库

  • 定义:有助于生成报告和业务数据分析的系统;商业智能的中心。
  • 示例: Amazon Redshift 可在数据仓库中实现。

47.数据湖

  • 定义:以原生/原始格式保存数据的系统或存储库,通常为对象 blob 或文件。
  • 示例:用于在数据湖中存储和管理结构化和非结构化数据的 PB 级扩展。

48. OLAP

  • 定义:联机分析处理:允许分析数据库中保存的数据的软件类别。
  • 示例:使用 OLAP 多维数据集进行尖锐分析和任意查询。

49. OLTP

  • 定义:联机事务处理:一类管理面向事务的应用程序的系统。
  • 示例:使用 OLTP 系统进行交易数据管理,如银行系统等。

50.大数据

  • 定义:大型、复杂的数据集,在最好的情况下也无法通过传统的数据处理软件进行有效管理。
  • 示例:分析社交媒体互动来预测时尚趋势。

 职场攻略与副业指南,成就你的IT人生。快扫描下面二维码关注吧!

ba1e8177db424136a3b666cf83ea7eef.png

相关推荐

  1. 必读】HTML中BFC:10知道惊人事实

    2024-07-20 13:44:02       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 13:44:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 13:44:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 13:44:02       87 阅读
  4. Python语言-面向对象

    2024-07-20 13:44:02       97 阅读

热门阅读

  1. libevent的事件分发相关接口

    2024-07-20 13:44:02       27 阅读
  2. 082、Python 读文本文件

    2024-07-20 13:44:02       28 阅读
  3. Linux绑定硬件IRQ到指定CPU核

    2024-07-20 13:44:02       26 阅读
  4. 使用内网穿透工具 frp 发布内网 web 站点

    2024-07-20 13:44:02       29 阅读
  5. 【WebRTC】Duplex通信是什么意思?

    2024-07-20 13:44:02       29 阅读
  6. TCP Socket编程示例

    2024-07-20 13:44:02       25 阅读
  7. windows上安装Apache

    2024-07-20 13:44:02       25 阅读
  8. 信息查询_社工

    2024-07-20 13:44:02       23 阅读
  9. Clickhouse 物化视图-optimize无效

    2024-07-20 13:44:02       27 阅读
  10. 07.16_111期_linux_网络通信

    2024-07-20 13:44:02       23 阅读