目录
推荐超级课程:
这是一门关于系统设计面试概念的完全速成讲解,这些概念是您在实战或者面试系统设计师工作前需要了解的。
系统设计面试与编码无关,人们不想看到您编写实际代码,而是想看到您如何将整个系统组合在一起,
这正是我们将在本教程中涵盖的内容,我们将讨论所有您设计大规模分布式系统之前需要了解的概念。
计算机架构(磁盘存储、内存、缓存、CPU)
要了解个人计算机的高级架构,在计算机上不同部件如何共同执行我们的代码,计算机通过分层系统运行,每一层针对不同任务进行优化。
计算机只能理解二进制的0和1,这些被表示为比特,一位比特是计算中最小的数据单位,
可以是0或1,一个字节包含8个比特,用于表示单个字符比如一个数字。从这里扩展,我们有千字节,兆字节,吉字节和太字节来存储这些数据,我们有计算机磁盘存储来存储这些数据,其中保存主要数据,它可以是HDD或SSD类型。磁盘存储是非易失性的,它在没有电源的情况下保持数据,这意味着如果您关闭或重新启动计算机,数据仍将存在,它包含应用程序和所有用户文件,就容量而言,典型的磁盘范围从数百GB到多个TB,而SSD更昂贵,但提供比HDD快得多的数据检索速度比如,SSD可能每秒有500到3500兆字节,而HDD可能提供80到160兆字节每秒,磁盘之后的下一个即时访问点是RAM或随机访问内存(RAM),RAM用作主要的活动数据持有者,并且它保存当前正在使用或正在处理的数据结构,变量和应用程序数据。
当程序运行时,其变量,中间结果计算,运行时堆栈等存储在RAM中,因为它允许快速读写访问,这是一种易失性内存,这意味着它需要电源来保留其内容,重启计算机后可能数据不会被保存,就容量而言RAM在消费设备中为几GB,而高端服务器可能为几百GB,在读写速度上通常超过每秒5000兆字节,比甚至最快的SSD
硬盘速度都要快,但有时候即使是这种速度也不够,这就引出了缓存,缓存比RAM更小,通常以兆字节为单位,但与RAM相比,缓存内存的访问时间更快,L1缓存,CPU首先检查L1缓存中的数据,如果没有找到,它会检查L2和L3缓存,最后检查RAM缓存的目的是减少访问数据的平均时间,这就是我们在这里存储频繁使用的数据以优化CPU性能CPU是计算机的大脑,当您运行代码时,CPU处理在程序中定义的操作,在可以运行我们的代码之前,需要首先编译成像Java,C++,Python或其他语言一样的机器代码编译器执行此转换,一旦代码编译成机器代码,CPU可以执行它,可以从我们的RAM磁盘和缓存数据读取和写入数据。
最后主板,它是将所有组件连接在一起的组件,它提供路径允许数据在这些组件之间流动,现在让我们看一下生产应用程序体系结构(CI/CD、负载均衡器、日志记录和监控)
应用程序体系结构(CI/CD、负载均衡器、日志记录和监控)
生产就绪的应用程序架构我们的第一个关键领域是CI/CD流水线持续集成和持续部署,这确保我们的代码从代码库通过一系列测试和流水线检查直接到生产服务器,而无需任何手动干预,它配置为使用平台如Jenkins或GitHub actions自动化我们的部署过程,一旦我们的应用程序在生产中,它必须处理大量用户请求,这是由我们的负载均衡器和反向代理器管理如nginx,他们确保用户请求均匀分布在多个服务器上,维持平滑的用户体验,即使在流量激增期间我们的服务器还需要存储数据,为此我们还有一个不在在同一生产服务器上运行的外部存储服务器,而是通过网络连接,我们的服务器也可能与其他服务器通信,并且可以有许多此类服务,而不仅仅一个,以确保所有事情顺畅运行,我们有日志记录和监控系统保持对每个微交互的警觉,存储日志和分析数据是标准实践,将日志存储在外部服务上通常在我们的主要生产中心区之外,关于后端工具像pm2可用于日志记录和监控,前端平台像Sentry可用于实时捕捉和报告错误
当事情不按计划进行时,意味着我们的日志系统检测到请求失败或异常,首先它会激活我们的警报服务,然后将推送通知发送给用户在日志系统检测到错误的请求或异常之后,首先会出现我们的警报服务,然后会向用户发送推送通知,以便让用户了解,从一般的某事崩溃到具体的支付失败
有效的沟通使用户不被留在黑暗中,培养信任和可靠性,现代实践是将这些警报直接集成到常用的平台中,比如Slack,想象一个专门的Slack频道,当问题出现时,警报会立即弹出,这使开发人员几乎可以即刻采取行动,解决根本原因,之后开发人员需要首先调试问题首先必须确定问题,我们之前提到的日志是我们的第一通电话,开发人员会浏览这些日志,寻找可能指向问题来源的模式或异常,之后它需要在安全环境中复制此问题安全环境的黄金规则是永远不要在生产环境中调试,而是开发人员在分期或测试环境中重新创建此问题,这可以确保用户不会受到调试过程的影响,然后开发人员使用工具观看运行数据应用程序并开始调试,一旦bug修复,会发布热修补,这是一种快速临时修复,旨在使事物再次运行,这就像一个补丁,在实现更持久的解决方案之前,这就像具体用例的最佳解决方案,这意
标签:存储,缓存,字节,RAM,应用程序,速成,设计,葵花宝典,日志 From: https://blog.csdn.net/ouyangtianhan/article/details/136972635