云顶娱乐城
云顶娱乐城
- 十大机床联网软件推荐 智能工厂数据中枢榜
- 云顶国际- 云顶赌场- 娱乐城系统架构设
- 中云顶国际- 云顶赌场- 娱乐城信建投|
- 爱得科技今云顶国际- 云顶赌场- 娱乐城
- 开云集团第四季度销售额同比下降3%云顶国
联系我们
电话:400-123-4567
手机:138-0000-0000
邮箱:admin@youweb.com
地址:广东省广州市天河区88号
哈希游戏
云顶国际- 云顶赌场- 娱乐城系统架构设计50个核心概念及规范(2026最新版)
- 作者:小编
- 发布时间:2026-02-14 02:41:31
- 点击:
云顶赌场app,云顶娱乐城,云顶,云顶国际,云顶国际娱乐,云顶赌场,云顶赌场玩法,云顶赌场规则,云顶赌场21点,云顶赌场在线,云顶娱乐场,云顶最新消息,云顶赌场会员卡,云顶娱乐,云顶APP,云顶官网本文汇集了 50 个系统设计核心概念,涵盖扩展性、CAP/PACELC、分片、缓存、队列、可靠性模式和安全性等。
您可以将其视为了解真实系统如何扩展、保持可靠性、通信和处理数据的一站式参考资料。
通过简短的解释和简单的例子,带你了解五十个重要的概念,让你快速理解所有内容。
可以这样理解:垂直方向的转变就像一个超级英雄变得更强,水平方向的转变就像组建一个团队。
CAP定理指出,在网络分区的情况下,分布式系统必须在一致性和可用性之间做出选择。一致性意味着每个用户在同一时间看到相同的数据。
网络出现故障时,你不可能同时拥有完美的稳定性和完美的可用性,所以你需要根据你的使用场景决定牺牲哪一个。
PACELC扩展了 CAP,并规定:如果存在分区,则选择可用性或一致性;否则,选择延迟或一致性。
即使网络状况良好,你仍然需要在速度慢但读取稳定,和速度快但读取最终不一致之间进行权衡。跨区域同步的系统,通常会以牺牲延迟为代价来保持高度一致性。
这就解释了为什么有些数据库速度快但数据略显过时,而另一些数据库速度慢但始终准确。
BASE代表基本可用、软状态、最终一致性,用于需要保持运行并快速响应的大型分布式系统。
实际上,许多架构将两者结合起来,使用 ACID 处理核心资金流,使用 BASE 处理诸如信息流和分析之类的事情。
通常可以通过并行处理更多工作来提高吞吐量,但如果队列积压,则可能会增加延迟。
想象一下,一家餐厅同时接收很多订单,却让顾客等待更长时间。好的系统设计力求在这两者之间取得平衡:既要保证足够的吞吐量以应对高峰负载,又要保证低延迟以提供流畅的用户体验。
如果你的系统有 20% 的运算始终是顺序执行的,那么再多的机器也无法解决这个瓶颈问题。
如果你的请求总是需要访问同一个主数据库,那么这个主数据库就会限制你的性能。这条定律提醒你,应该先找出性能瓶颈,而不是简单地增加服务器数量。
最终一致性非常适合时间线或计数器等大规模系统,因为在这些系统中,完美的实时性并非至关重要。
微服务帮助团队独立工作并分别扩展不同的部分,但同时也带来了沟通、调试和数据一致性方面的复杂性。
单体架构的初始阶段比较简单,而且在一定规模内通常都能很好地满足需求。但棘手之处在于……
许多优秀的系统最初都是单体架构,当真正遇到问题时,它们会逐渐演变为微服务架构。
无服务器架构能让你在云端运行小型函数,而无需直接管理服务器。您只需在代码运行时付费,平台会为您处理扩展和基础设施。
它非常适合事件驱动型工作负载,例如 webhook、后台作业或流量波动较大的轻量级 API。
缺点是:对长时间运行的任务控制较少,冷启动速度较慢,而且在大批量生产时成本有时会更高。
可以将无服务器架构视为“函数即服务”,它非常适合用于粘合代码和轻量级服务。
负载均衡将传入流量分散到多个服务器上,从而避免单个服务器过载。它提高了可靠性和性能,因为单个服务器的故障不会导致整个系统崩溃。
负载均衡器可以是硬件设备或软件服务。它们通常支持健康检查,以便停止将流量发送到不健康的实例。
可以将反向代理想象成公司的前台,它隐藏了所有内部房间;而将正向代理想象成笔记本电脑连接到互联网必须经过的网关。
API网关是一种特殊的反向代理,它充当微服务系统中所有 API 调用的单一入口点。它负责将请求路由到正确的服务、速率限制、身份验证、日志记录,有时还负责响应整形。
如果网关中逻辑过多,它可能会成为瓶颈,或者变成一个独立的微型庞然大物。好的设计应该保持网关功能集中且精简。
CDN是一个由地理位置分散的服务器组成的网络,它将静态内容(如图像、视频和脚本)缓存到更靠近用户的位置。
当用户请求内容时,请求会被路由到最近的 CDN 节点,从而大幅降低延迟。这还能减轻源服务器的流量压力,提高可扩展性和弹性。
它采用多层缓存机制,因此首次查找后响应速度很快。它还可以通过为同一名称返回不同的 IP 地址来实现简单的负载均衡。
了解 DNS 可以帮助您理解为什么名称更改需要时间才能传播,以及为什么某些服务中断是由 DNS 配置错误引起的。
引入了多路复用技术,允许多个请求共享单个 TCP 连接,从而降低开销。它还带来了诸如头部压缩和服务器推送等特性。
基于 QUIC 协议运行,QUIC 协议又基于 UDP 协议,它能缩短连接建立时间,并提升在不可靠网络上的性能。这些版本的主要目标是降低延迟,更好地利用现代网络环境。
在微服务中,gRPC 通常用于服务间的调用,而 REST 则常用于外部客户端。
当可读性和兼容性至关重要时,请使用 REST;当性能和契约至关重要时,请使用 gRPC。
WebSocket创建一个全双工连接,客户端和服务器可以随时互相发送消息。
SSE 更简单,适用于实时比分更新或通知等情况,只需要服务器推送更新即可。
长轮询是一种客户端发送请求,服务器保持连接打开状态,直到有新数据或超时为止的技术。
当收到响应后,客户端立即发起另一个请求。这样就模拟了通过纯 HTTP 协议实现实时更新,而无需使用特殊协议。
它不如 WebSocket 高效,但更容易实现,并且可以穿透大多数代理和防火墙。
随着时间的推移,信息会在社交群体中像流言蜚语一样传播,直到每个人都持有大致相同的观点。它被用于以容错的方式共享成员信息、健康状况或配置信息。
该协议最终是一致的,并且不依赖于中央权威机构。这使其成为节点频繁加入和离开的大型集群的理想选择。
分片将数据分散存储在多台机器上,每台机器保存一部分数据。常见的分片策略包括基于范围的分片、基于哈希的分片和基于目录的分片。
难点在于选择合适的分片键,避免出现流量热点,即某个分片承载了大部分流量。分片完成后,在分片之间迁移数据(重新分片)就成为一项重要的运维挑战。
复制可以提高读取性能和可用性,但会使一致性更难保证,尤其是在写入操作要到多个节点时。
面试时,你可能会谈到复制延迟如何影响读取操作,以及当主服务器宕机时故障转移是如何工作的。
一致性哈希是一种将键分布在各个节点上的技术,它可以在添加或删除节点时最大限度地减少数据移动。
当节点加入或离开时,只需要移动一小部分键。这一特性在分布式缓存和数据库中非常有用。
你可以把它想象成一个平滑的映射,即使集群大小发生变化,它也不会变得混乱。
B 树是一种平衡树,它能保持数据有序,并能高效地查找范围,这在关系数据库中很常见。
LSM 树将数据批量写入内存,并定期将其刷新到磁盘,这使得写入速度非常快,但读取操作更加复杂。
关键在于索引是一个独立的结构,每次写入时都必须更新,这就是为什么索引过多会影响插入性能的原因。
如果在事务处理过程中发生崩溃,系统可以重放日志以恢复一致状态。WAL(预写式日志)确保事务的持久性和原子性。它还支持从日志流复制等技术。让我来解释一下它为何如此重要。
真正的技巧在于知道在不破坏一致性的前提下,可以在哪些方面安全地打破常规。
多语言持久性是指在同一个系统中使用多种类型的数据库,每种数据库都因其最擅长的领域而被选中。例如,可以使用关系型数据库处理事务,使用文档型数据库存储日志,使用键值型数据库进行缓存,以及使用图数据库来存储关系。
布隆过滤器是一种空间利用率高的数据结构,它能快速判断“这个元素是否在集合中?”,虽然可能出现误报,但不会漏报。它使用多个哈希函数在插入元素时设置位数组中的相应位。
要检查成员资格,您需要测试相同的位;如果任何一位为零,则该项肯定不存在。
向量数据库存储和查询向量,向量是对文本、图像或音频等数据的数值表示。这些向量来自嵌入等模型,并支持相似性搜索,例如“查找与此文档最相似的文档”。
它们并非进行精确的相等性比较,而是使用余弦相似度或欧氏距离等距离度量。这对于现代搜索、推荐和人工智能助手系统至关重要。
速率限制控制用户、IP 地址或 API 密钥在给定时间窗口内可以发出的请求数量。它可以保护您的系统免受滥用、意外流量高峰和失控循环的影响。
经过一段时间的冷却后,系统会进行几次试探性调用,以检查服务是否已恢复,如果成功则关闭服务。这种模式可以防止级联故障,避免一个运行缓慢的服务拖垮整个系统。
隔板模式将系统的不同部分隔离开来,这样一来,一个区域的故障就不会影响整个系统。这可能意味着为不同的功能使用独立的连接池、线程池,甚至是整个服务集群。
指数退避是指每次重试的等待时间都比前一次更长,例如 1 秒、2 秒、4 秒等等。这可以防止客户端对已经不堪重负的服务造成过大的访问压力。
例如,“将用户状态设置为活跃”是幂等的,而“将账户余额增加 10”则不是幂等的。
如果它们停止接收这些节点,它们会将节点标记为宕机,并触发故障转移或扩展操作。
Paxos 和 Raft 等算法确保只选出一个领导者,并且所有节点最终都同意由谁来担任领导者。
领导者负责处理诸如分配工作、管理元数据或安排写入操作等任务。如果领导者失效,系统会自动选举新的领导者。
面试时不需要记住具体的数学公式,但你应该知道共识算法为许多关键系统(如元数据存储和分布式日志)提供支持。
这种方式并非像单一的 ACID 事务那样锁定所有操作,而是每个服务执行其部分并发布一个事件。如果出现故障,补偿步骤会尝试撤销之前的更改。这与微服务和最终一致性自然契合。
2PC 提供了强大的保证,但如果协调器发生故障,则可能会阻塞,并且由于锁定,大规模应用成本很高。
在现代云系统中,对于高吞吐量路径,通常会避免使用 2PC,而是采用 SAGA 等模式来代替。
缓存将频繁访问的数据存储在快速存储层(通常是内存)中,以减少延迟和后端负载。
常见的缓存层包括进程内缓存、外部键值存储和内容分发网络 (CDN)。缓存对于读取密集型工作负载和高成本计算尤其有效。
旁路缓存(Cache aside):应用程序直接从缓存读取数据,未命中时则从数据库加载并写入缓存。
通写缓存(Write through):同步写入缓存与数据库,确保缓存与数据源始终保持一致。
回写缓存(Write back):优先写入缓存,后续再回刷至数据库。这种方式速度快,但若缓存失效则存在数据丢失风险。
在点对点模型中,队列中的消息由一个接收器消费后即被移除。这使得发送方和接收器解耦,从而使它们能够独立扩展和应对故障。
在pub sub 中,发布者向主题发送消息,而不是直接向消费者发送消息。
订阅者可以收听自己感兴趣的话题,并接收相关信息。这实现了广播式的沟通方式,并降低了生产者和消费者之间的联系。
在访谈中,pub sub 经常出现在事件驱动型设计中,例如活动信息流或事件来源。
工程师可以检查死信队列来调试问题、修复数据或稍后重放消息。这种模式提高了系统的弹性,并防止系统因“毒信”而陷入困境。
分布式追踪会跟踪单个请求在多个服务间的流转过程。每个服务都会添加一个追踪 ID 和跨度信息,以便您可以重构请求的完整路径。这在调试微服务架构中的响应缓慢或故障时非常有用。
如果没有追踪功能,你只能看到孤立的错误。有了追踪功能,你就能看到服务、队列和数据库中的完整情况。
服务级别协议 (SLA )是对客户的外部承诺,例如“每月 99.9% 的正常运行时间”。
服务级别目标 (SLO )是工程师力求达到的内部目标,通常比服务级别协议 (SLA) 更为严格。
服务级别指标 ( SLI )则是实际测量的指标,例如实际正常运行时间或请求成功率。
OAuth 2.0是一个委托授权框架。它允许用户在不共享密码的情况下,授予应用程序对其资源的有限访问权限。
OIDC (OpenID Connect)基于 OAuth 2.0 构建,增加了身份验证功能,允许客户端验证用户身份并获取用户身份信息。这是许多“使用 X 登录”流程的基础。
握手完成后,所有后续数据都会被加密,防止被窃听。这就是为什么你的浏览器中会出现小锁图标的原因。
零信任是一种安全模型,其核心思想是:“永远不要相信,一定要核实。”它假设威胁可能存在于网络外部,也可能存在于网络内部。
即使请求来自您的数据中心或 VPC 内部,也必须经过身份验证、授权和加密。访问权限的授予基于身份、设备状态和上下文,而不仅仅是“位于防火墙内部”。
系统设计主要在于理解权衡取舍:一致性与可用性、延迟与吞吐量、简单性与灵活性。
扩展不仅仅是“增加服务器数量”。你还必须考虑负载均衡、分片、复制和瓶颈问题。
分布式系统中出现故障是正常现象,因此需要采用速率限制、断路器、重试和隔离层等可靠性模式。
缓存、队列和发布/订阅是提高性能和解耦的最佳选择,但它们也带来了关于一致性和顺序的新挑战。
可观测性和安全性概念,例如跟踪、SLI、OAuth、TLS 和零信任,对于不仅速度快而且安全、可调试的系统至关重要。
