【系统设计系列】延迟吞吐和一致性

news2025/1/17 3:11:35

系统设计系列初衷


System Design Primer: 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

中文版: https://github.com/donnemartin/system-design-primer/blob/master/README-zh-Hans.md

初衷主要还是为了学习系统设计,但是这个中文版看起来就像机器翻译的一样,所以还是手动做一些简单的笔记,并且在难以理解的地方对照英文版,根据自己的理解在AI的帮助下进行翻译和知识扩展。
 

延迟和吞吐量

1. 简单地说

延迟是执行操作或运算结果所花费的时间。

吞吐量是单位时间内(执行)此类操作或运算的数量。

通常,应该以可接受级延迟最大化吞吐量为目标。

2.复杂地说

        延迟(Latency):延迟是指服务从接收请求到给出响应的时间。换句话说,延迟是服务处理请求的速度。延迟越低,表示系统处理请求的速度越快。延迟可以从不同的角度进行划分,如网络延迟、处理延迟等。
        吞吐量(Throughput):吞吐量是指系统在单位时间内处理请求的数量。换句话说,吞吐量是衡量系统处理能力大小的指标。吞吐量越高,表示系统在单位时间内能够处理更多的请求。

3. 延迟和吞吐量之间的关系:

        一般来讲,在一台机器的情况下,如果请求响应越低,也就是延迟越低,那么单位时间能处理的请求数量不就更高了吗?那么低延迟和高吞吐量是匹配的上的。

        实际上,在很多场景下,低延迟和高吞吐量之间存在一种权衡关系。
        降低延迟可以提高系统的响应速度,使得在单位时间内能够处理更多的请求。然而,为了实现低延迟,系统可能需要采用更复杂的算法、增加服务器数量或使用更快的通信协议等方法,这些优化可能会导致系统吞吐量降低。
        相反,追求高吞吐量可能会导致延迟增加。例如,在高吞吐量的情况下,系统可能需要使用更复杂的算法或者增加服务器数量,但这些优化可能会导致请求处理时间增加,从而使延迟变高。
因此,在实际系统设计和优化过程中,需要根据具体的应用场景和需求综合考虑延迟和吞吐量,以达到最佳的性能表现。在某些情况下,适当地平衡延迟和吞吐量,可能会使得系统整体性能更优。

可用性与一致性

CAP 理论

在一个分布式计算系统中,只能同时满足下列的两点:

  • 一致性 ─ 每次访问都能获得最新数据但可能会收到错误响应
  • 可用性 ─ 每次访问都能收到非错响应,但不保证获取到最新数据
  • 分区容错性 ─ 在任意分区网络故障的情况下系统仍能继续运行

网络并不可靠,所以你应要支持分区容错性,并需要在软件可用性和一致性间做出取舍。

CP ─ 一致性和分区容错性

等待分区节点的响应可能会导致延时错误。如果你的业务需求需要原子读写,CP 是一个不错的选择。

AP ─ 可用性与分区容错性

响应节点上可用数据的最近版本可能并不是最新的。当分区解析完后,写入(操作)可能需要一些时间来传播。

如果业务需求允许最终一致性,或当有外部故障时要求系统继续运行,AP 是一个不错的选择。

一致性模式

有同一份数据的多份副本,我们面临着怎样同步它们的选择,以便让客户端有一致的显示数据。回想 CAP 理论中的一致性定义 ─ 每次访问都能获得最新数据但可能会收到错误响应

弱一致性

在写入之后,访问可能看到,也可能看不到(写入数据)。尽力优化之让其能访问最新数据。

这种方式可以 memcached 等系统中看到。弱一致性在 VoIP,视频聊天和实时多人游戏等真实用例中表现不错。打个比方,如果你在通话中丢失信号几秒钟时间,当重新连接时你是听不到这几秒钟所说的话的。

最终一致性

在写入后,访问最终能看到写入数据(通常在数毫秒内)。数据被异步复制。

DNS 和 email 等系统使用的是此种方式。最终一致性在高可用性系统中效果不错。

强一致性

在写入后,访问立即可见。数据被同步复制。

文件系统和关系型数据库(RDBMS)中使用的是此种方式。强一致性在需要记录的系统中运作良好。

可用性模式

有两种支持高可用性的模式: 故障切换(fail-over)和复制(replication)

故障切换

工作到备用切换(Active-passive)

关于工作到备用的故障切换流程是,工作服务器发送周期信号给待机中的备用服务器。如果周期信号中断,备用服务器切换成工作服务器的 IP 地址并恢复服务。

宕机时间取决于备用服务器处于“热”待机状态还是需要从“冷”待机状态进行启动。只有工作服务器处理流量。

工作到备用的故障切换也被称为主从切换。

双工作切换(Active-active)

在双工作切换中,双方都在管控流量,在它们之间分散负载。

如果是外网服务器,DNS 将需要对两方都了解。如果是内网服务器,应用程序逻辑将需要对两方都了解。

双工作切换也可以称为主主切换。

缺陷:故障切换

  • 故障切换需要添加额外硬件并增加复杂性。
  • 如果新写入数据在能被复制到备用系统之前,工作系统出现了故障,则有可能会丢失数据。

复制

主─从复制

        在主从复制中,一台服务器充当主服务器(master),负责处理写入和更新操作,而一个或多个其他服务器充当从服务器(slave),只负责读取操作。主服务器将自己的数据变更同步到从服务器,从而实现数据的一致性。
主从复制有以下几个优点:
        提高性能:通过增加从服务器来分担主服务器的压力,提高数据库的处理能力。在主服务器上执行写入和更新操作,在从服务器上提供读功能,可以根据需求动态调整从服务器的数量。
        提高稳定性:当主服务器出现问题时,从服务器可以接管数据访问,避免业务中断。同时,主从复制可以实现数据在不同服务器之间的同步,防止数据丢失。
        容易维护和管理:通过主从复制,可以将数据分散在不同的服务器上,降低单点故障的风险,提高系统的可维护性和可扩展性。
        主从复制可以应用于多种数据库系统,如 MySQL、RocketMQ 等。在这些系统中,主从复制技术有着不同的实现方式和参数配置,但基本原理都是一样的。

主─主复制

        主主复制中的两个服务器都具有读写权限,可以同时进行读写操作。当一个服务器发生故障时,另一个服务器可以接管数据访问,从而实现高可用性和故障切换。
主主复制的优点包括:
        高可用性:当一个数据库服务器发生故障时,另一个服务器可以接管数据访问,避免业务中断。
        负载均衡:通过将数据分散在两个服务器上,可以提高数据库的处理能力,实现负载均衡。
        数据分布:将数据分布在两个服务器上,可以降低单点故障的风险,提高系统的可维护性和可扩展性。
        然而,主主复制也有一些缺点,如数据冲突和复杂性。在主主复制中,由于两个服务器都可以进行写操作,可能会出现数据冲突的情况。为了解决这个问题,可以采用一些策略,如将写操作限制在某个服务器上,或者使用分布式事务来确保数据的一致性。此外,主主复制的配置和管理相对较为复杂。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980426.html

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

相关文章

Windows下搜索文件内容的关键字用什么命令

Windows下搜索文件内容的关键字用什么命令 findstr /s /n /i "keyword" file_path其中,/s 表示递归检索子文件夹,/n 表示显示搜索结果所在行号,/i 表示忽略大小写,“keyword” 是要搜索的关键字,file_path 是…

android程序中,产生ANR原因与分析解决

产生原因 在android程序中,所有的输入(key和touch等)事件是由底层的InputDispatcher分发到上层的InputManagerService的,再通过InputManagerService内部的InputMonitor送入WindowManagerService的Policy(PhoneWindowM…

Linux CentOS7设置时区

在Linux系统中,默认使用的是UTC时间。 即使在安装系统的时候,选择的时区是亚洲上海,Linux默认的BIOS时间(也称:硬件时间)也是UTC时间。 在重启之后,系统时间会和硬件时间同步,如果…

C# 命令行参数分割

CommandLineToArgvW 函数 [DllImport("shell32.dll", SetLastError true)] private static extern IntPtr CommandLineToArgvW([MarshalAs(UnmanagedType.LPWStr)] string lpCmdLine, out int pNumArgs); 参数: [in] lpCmdLine 类型:…

VR数字工厂,为企业工厂打造竞争新优势

工业经济中大部分行业都是制造业,为了合力助推工业经济提质增效,谋划推进制造业数字化转型就显得尤为重要了。用VR赋能工厂数字升级,打造VR数字工厂,满足各行各业沉浸式营销展示需求。 VR数字工厂是一种全新的工业模式&#xff0c…

淘宝天猫1688京东商品详情(PC端和APP端)数据代码如下

淘宝天猫1688京东商品详情(PC端和APP端)数据代码如下: 请求示例 # coding:utf-8 """ Compatible for python2.x and python3.x requirement: pip install requests """ from __future__ import print_functio…

大厂常用的B端设计系统推荐

伴随着企业级应用的迅速发展,越来越多的企业和组织开始关注设计系统,以提高其应用的设计效率和质量。B端设计系统在这一领域发挥着重要作用。本文将介绍8个著名的B端设计系统。开发者需要仔细分析自己的项目特点,了解每一个设计系统的特点和优…

登录密码加盐处理方式

哈喽!大家好,我是旷世奇才李先生 文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟,回复【项目】获取我为大家准备的项目 文章目录 一、登录密码加盐处理方式1、简介2、密…

Linux内核的GPIO子系统驱动框架详解

目录 1 引入 2 GPIO子系统的层次 3 gpio子系统驱动程序流程 4 gpio子系统的中药数据结构 5 gpio子系统函数调用的详细细节 6 GPIO子系统的sysfs接口 6.1有哪些gpio控制器 6.2每个gpio控制器的详细信息 6.3查看gpio使用情况 6.4通过SYSFS使用GPIO 6.4.1 确定GPIO编号…

Hadoop的第二个核心组件:MapReduce框架第一节

Hadoop的第二个核心组件:MapReduce框架第一节 一、基本概念二、MapReduce的分布式计算核心思想三、MapReduce程序在运行过程中三个核心进程四、如何编写MapReduce计算程序:(编程步骤)1、编写MapTask的计算逻辑2、编写ReduceTask的…

Linux命令行

目录 CLI GUI 命令行界面 图形界面 命令行提示符 # $ ​编辑 命令一般由三个部分组成 历史命令,使用上下键,或者使用history,ctrlr搜索历史命令 通配符 *,? 切换用户 su 作业管理 &,jobs,bg,fg CLI GUI 命令行界面 …

基于SSM的健身房管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

第一天 关于项目遇到的问题和缺少的知识点

1.配置静态资源映射 配置文件使用的都是配置类方式 创建配置类WebMvcConfig,设置静态资源映射 用于在Springboot项目中, 默认静态资源的存放目录为 : "classpath:/resources/", "classpath:/static/", "classpath:/public/" ; 而在我们的项目中静…

黑客是如何“免费”坐飞机的?

对于爱好飞行的“空中飞人”来说,航空里程早已不是什么新鲜话题。如何利用航司的各种会员等级福利?如何积累里程?如何兑换航线?这些与里程相关的研究和分析,甚至发展成了非常成熟的社区文化。 航空里程也在不断的发展…

AI云服务平台大全:GPU租用 | App托管 | MLOps平台

我们搜集整理了国内外主要的深度学习云服务商,包括云GPU供应商、WebApp托管商和MLOps平台商。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 1、云GPU供应商 只有一台笔记本电脑💻不足以运行你的AI模型,忘记它吧,使用云 …

【网易云信】音画同步测试方法的研究与实践

概述 随着移动互联网的普及和网络带宽的提高,音视频通话越来越成为人们生活和工作中不可或缺的一部分。音画同步是音视频体验的一个重要指标,在音视频传输过程中,由于不同的传输策略因为网络的干扰,音频和视频往往难以同时到达&a…

智能小车—PWM方式实现小车调速和转向

目录 1. 让小车动起来 2. 串口控制小车方向 3. 如何进行小车PWM调速 4. PWM方式实现小车转向 1. 让小车动起来 电机模块开发 L9110s概述 接通VCC,GND 模块电源指示灯亮, 以下资料来源官方,具体根据实际调试 IA1输入高电平&#xff0c…

上海控安SmartRocket系列产品推介(六):SmartRocket PeneX汽车网络安全测试系统

产品概述 上海控安汽车网络安全测试系统PeneX(Penetrator X)是一款支持对整车及车辆零部件及子系统实施网络安全测试的系统,其包含硬件安全、软件系统安全、车内通信及车外通信四大安全测试系统;支持合规性测试,包含国…

《TCP/IP网络编程》阅读笔记--基于 TCP 的半关闭

目录 1--基于TCP的半关闭 1-1--TCP单方面完全断开的问题 1-2--shutdown()函数 1-3--半关闭的必要性 2--基于半关闭的文件传输程序 1--基于TCP的半关闭 1-1--TCP单方面完全断开的问题 Linux 系统中的 close 函数会将 TCP Socket 的连接完全断开,这意味着不能收…

项目(智慧教室)第四部分,页面交互功能

一。页面构思 1.标题栏 大标题:智慧教室管理系统 小标题:灯光,报警,风扇,温度,湿度,光照 2.样式设计 背景设置。字体设置(字体大小,格式,颜色) 3.…