本周系统设计复习:

  • 如何像老板一样通过系统设计面试?
  • 我的新书《编码面试模式》现已在亚马逊上架
  • 谁是系统设计的奇幻四侠?
  • 单播 vs. 广播 vs. 组播 vs. 任播
  • VISA 如何赚钱?

通过系统设计面试的 7 步流程

遵循这个 7 步流程在系统设计轮次中表现良好:

步骤 1:需求澄清

在第一步中,澄清功能和非功能需求。提问以理解系统的核心功能以及非功能方面,如数据量、可用性、规模等。

步骤 2:容量估算

接下来,估算系统的容量。专注于属性,如用户数量、流量、存储/内存需求,以及计算和网络要求。

步骤 3:创建高级设计

将系统分解为组件,如客户端应用、服务器、负载均衡器、数据库等。从绘制显示这些组件及其潜在交互的简单框图开始。专注于数据流。

步骤 4:数据库设计

对数据建模并为系统选择正确的数据库类型。完成后,专注于数据库模式。

步骤 5:接口设计

接下来,专注于系统的接口。这可以是 API 端点或在系统各种组件之间交换的事件模型。此外,选择通信方法,如 REST、GraphQL、gRPC 或事件驱动。

步骤 6:可扩展性和性能

通过建议将使用的技术解决系统的可扩展性、性能和延迟方面。例如,垂直和水平扩展、缓存、索引、去规范化、分片、复制、CDN 等。

步骤 7:可靠性和弹性

最后,解决设计的可靠性和弹性。识别单点故障并减轻其影响。

系统设计的四大支柱

可扩展性、可用性、可靠性和性能

它们是打造成功软件系统最关键的组件。

让我们看看每个以及实现技术:

1. 可扩展性(Scalability)

可扩展性确保你的应用可以处理更多负载而不损害性能。

2. 可用性(Availability)

可用性确保你的应用始终准备好为用户服务,停机时间最小。

3. 可靠性(Reliability)

可靠性是关于构建始终如一地提供正确结果的软件。

4. 性能(Performance)

性能是系统在峰值负载下使用可用资源以预期速率执行任务的能力。

4 种网络通信方法

这是你必须知道的 4 种网络通信方法。

1. 单播(Unicast)

唯一发送者和单个接收者。例如,派对中两个人之间的通信。用于 HTTP、FTP 和 SMTP 等协议。

2. 广播(Broadcast)

单个发送者和多个接收者。例如,派对中的人站在讲台上向每个人喊话。然而,这并不意味着每个接收者都收到消息。用于地址解析协议、DHCP 和 NTP。

3. 组播(Multicast)

发送到网络中特定设备组的发送者。这是广播路由的 specialized case。例如,组成员在派对中与组内其他成员交谈和倾听。用于 IPTV 和视频会议应用。

4. 任播(Anycast)

发送到单个设备或特定设备组。例如,对组织派对的组中一个主机说谢谢。所有其他主机也期望收到感谢信。用于 DNS 查询和 CDN。

VISA 如何赚钱

为什么信用卡被称为”银行最盈利的产品”?VISA/Mastercard 如何赚钱?

下图显示了信用卡支付流程的经济学。

  1. 持卡人支付商家$100 购买产品

  2. 商家从信用卡使用中受益,销售额更高,需要补偿发卡行和卡网络提供支付服务。收单行与商家设置费用,称为”商家折扣费”。

3-4. **收单行保留0.25作为收单加价0.25 作为收单加价**,1.75 作为交换费支付给发卡行。商家折扣费应涵盖交换费。

交换费由卡网络设置,因为每个发卡行与每个商家谈判费用效率较低。

  1. 卡网络与每家银行设置网络评估和费用,银行每月为服务向卡网络付费。例如,VISA 对每次刷卡收取 0.11% 评估费,加上$0.0195 使用费。

  2. 持卡人向发卡行支付服务费

为什么发卡行应该得到补偿?

  • 即使持卡人未能向发卡行付款,发卡行也会向商家付款
  • 发卡行在持卡人向发卡行付款之前向商家付款
  • 发卡行有其他运营成本,包括管理客户账户、提供账单、欺诈检测、风险管理、清算和结算等

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP141: How to Ace System Design Interviews Like a Boss?

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。