系统设计概念:生产 Web 应用的架构

在你使用的每个完美应用程序背后,都有一整套的架构、测试、监控和安全措施。今天,让我们来看看一个生产就绪应用程序的非常高层次的架构。

CI/CD 管道

我们的第一个关键领域是持续集成和持续部署——CI/CD 管道。

这确保我们的代码从存储库经过一系列测试和管道检查,无需任何手动干预就进入生产服务器。

07793a6d7286125f051002d9e171d9df.png
1*DIPdJHlAKsQero5qiyM7NQ.png

它配置了像 Jenkins 或 GitHub Actions 这样的平台,用于自动化我们的部署流程。

与服务器的交互

一旦我们的应用程序投入生产,它就必须处理大量用户请求。这由我们的负载均衡器和反向代理(如 Nginx)管理。

acf74a0616b95a726a290436f9eb0d0b.png
1*Gm7GMJvVh-dVdT6C07eMsw.png

它们确保用户请求均匀分布在多个服务器上,即使在流量激增期间也能保持平稳的用户体验。

骨干:数据存储和外部 API

我们的服务器还需要存储数据。为此,我们还有一个不运行在相同生产服务器上的外部存储服务器。相反,它通过网络连接。

0fae67043245f3bad2a7f827df900fd1.png
1*OHiyw0UFHWRnsQ5XubDTXg.png

我们的服务器可能还与其他服务器通信。而且我们可以有多个这样的服务,不仅仅是一个。

357afa80f276f015f26f7a77db7ff79b.png
1*K0zq-pfcKDYdJCvvEOx4Ow.png

监控、日志和警报:默默的保护者

为了确保一切运行顺利,我们有日志记录和监控系统,对每个微观交互保持敏锐的关注,存储日志并分析数据。

cd4f4eef3d36787b14c035eea9115e7f.png
1*Gz8f6IeZRgPT1AE-fFhzcw.png

将日志存储在外部服务上是一种标准做法,通常不在我们的主要生产服务器上。

对于后端,像 PM2 这样的工具可以用于日志记录和监控。对于前端,像 Sentry 这样的平台可以用于实时捕获和报告错误。

54c8c69d07037e5f205f8cd9cc19fece.png
1*PZ0wV0VYw8EI1zFVmMPn8w.png

警报服务

当事情不按计划进行时,也就是我们的日志系统检测到失败的请求或异常时?

首先,它通知我们的警报服务。之后,推送通知被发送,以保持用户的知情。从一般的“出现问题了”到具体的“支付失败”,有效的沟通确保用户不会被置于黑暗中,培养了信任和可靠性。

29eb2c74e80a6170e9186ae4f6425b7b.png
1*dbccl16Pm4c4SpKS_D3dCg.png

现代做法是将这些警报直接集成到我们常用的平台中,如 Slack。

f54736af2fd74360e8efb1062b78239b.png
1*iJ0jseZ7PLHyqGC2EgVb0Q.png

想象一下一个专门的 Slack 频道,警报在问题出现的瞬间弹出。这使开发人员几乎可以立即采取行动,在问题升级之前解决根本原因。

在生产环境中调试

之后,开发人员必须调试问题。

日志查看:首先,需要识别问题。我们之前提到的那些日志?它们是我们首选的工具。开发人员通过它们筛选,寻找可能指向问题源的模式或异常。

98d99dc013c2c444678357e8d05390c5.png
1*vECE_pDLSK_BNBTb1nUiZA.png

在安全环境中复制:黄金法则是——永远不要直接在生产环境中调试。相反,开发人员在‘staging’或‘test’环境中重新创建问题。这确保用户不会受到调试过程的影响。

bc8b893b6f9811e0b186305cfde043bb.png
1*0PgaONmKlvOJpC9RY3rYPQ.png

开发人员使用工具来查看运行中的应用程序并开始调试。

热修复:一旦错误修复,就会推出‘hotfix’。这是一个快速的、临时的修复,旨在让事情再次运行起来。这就像在更永久的解决方案可以实施之前的一个补丁。

bd1d06c49a67135202a5eda06b7b8eaf.png
  • 系统设计概念系列文章

计算机的层次化架构

每个开发者都应该知道的7个原则

6个系统设计的基本概念

数据库:系统设计的核心

  • 图解系列

系统设计中的缓存技术:完整指南

关系数据库的全景图 

Redis 全景解析

当然架构设计、全景图解系列还有很多,快来关注一起学习吧~

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

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

相关文章

Java核心知识点整理大全22-笔记

目录 19.1.14. CAP 一致性(C): 可用性(A): 分区容忍性(P): 20. 一致性算法 20.1.1. Paxos Paxos 三种角色:Proposer,Acceptor,L…

YOLOv8独家原创改进:自研独家创新MSAM注意力,通道注意力升级,魔改CBAM

💡💡💡本文自研创新改进:MSAM(CBAM升级版):通道注意力具备多尺度性能,多分支深度卷积更好的提取多尺度特征,最后高效结合空间注意力 1)作为注意力MSAM使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,对标CBAM。 在道路缺陷检测任务中,原始ma…

VMware通过ISO镜像安装window2016虚拟机

1.点文件->新建虚拟机 2.进入到下边页面 3.根据你的服务器硬件选择硬件兼容性 4.选择2016版本的windows(注:没有该版本的话选择最高版本) 5.根据你的需求选择引导设备( 启动过程: BIOS: 在计算机启动时,BIOS负责进行自检&#…

华天动力-OA8000 MyHttpServlet 文件上传漏洞复现

0x01 产品简介 华天动力OA是一款将先进的管理思想、 管理模式和软件技术、网络技术相结合,为用户提供了低成本、 高效能的协同办公和管理平台。 0x02 漏洞概述 华天动力OA MyHttpServlet 存在任意文件上传漏洞,未经身份认证的攻击者可上传恶意的raq文件…

Kanna库代码示例

编写一个使用Kanna库的网络爬虫程序。以下是代码的详细解释: swift import Kanna // 创建一个对象 let proxy Proxy(host: ") // 创建一个Kanna对象 let kanna Kanna(proxy: proxy) // 创建一个请求对象 let request Request(url: "") // 使用…

【算法刷题】Day8

文章目录 202. 快乐数解法: 11. 盛最多水的容器解法: 202. 快乐数 原题链接 拿到题,我们先看题干 把一个整数替换为每个位置上的数字平方和,有两种情况: 重复这个过程始终不到 1(无限死循环)结…

python基于YOLOv7系列模型【yolov7-tiny/yolov7/yolov7x】开发构建钢铁产业产品智能自动化检测识别系统

在前文的项目开发实践中,我们已经以钢铁产业产品缺陷检测数据场景为基准,陆续开发构建了多款目标检测模型,感兴趣的话可以自行阅读即可。 《YOLOv3老矣尚能战否?基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统&#xf…

专业的事交给专业的公司来做,文件销毁 数据销毁 硬盘销毁

在当今信息化社会,数据和文件已经成为企业和个人生活中不可或缺的一部分。然而,随着数据量的不断增长,如何确保数据的安全性和隐私性成为了一个亟待解决的问题。为了解决这个问题,文件销毁、硬盘销毁、数据销毁和物料销毁等技术应…

无需部署服务器,如何结合内网穿透实现公网访问导航页工具Dashy

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航…

【Python基础】协程(迭代器、生成器、协程、gevent介绍)

🌈欢迎来到Python专栏 🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C、Linux系统编程、计算机网络、数据结构、Mys…

Python爬虫遇到重定向URL问题时如何解决?

什么是重定向 重定向是指当用户请求一个URL时,服务器返回一个中断请求的URL的响应。这种情况通常发生在网站对URL进行了修改或者重定向到其他页面的情况下。其中,如果处理不当开发,可能会导致爬虫无法获取所需的数据,从而影响爬虫…

具有“真实触感”的动捕数据手套mhand pro,提供更精确的动作捕捉

随着人工智能的普及和万物互联,vr虚拟技术备受关注,为了更加真实的虚拟现实交互体验,动捕数据手套的使用逐渐普及,vr手套可以实时采集各手指关节运动数据,使用动捕数据手套可以在虚拟现实的场景中实现对真实手部运动的…

H3C堆叠和聚合配置

因ensp做不了堆叠,所以用了华三的模拟器HCL,下载地址:H3C网络设备模拟器官方免费下载-新华三集团-H3C 拓朴如下: 1、堆叠配置步骤如下: 1、S1和S2配置堆叠过程: [S1] irf domain 1 irf member 1 priority …

如何通过CRM实现客户关系管理?

——“小米加步枪是打不赢现代化战争的。” ——”CRM系统已成为企业掘金未来的必备。“ 数字化转型已经成为了企业发展的重要方向,然而数字化转型不仅仅是把线下搬到线上,更重要的是,真正的数字化转型应该以客户的连接和客户的数字化作为突破…

义无反顾马督工,Bert-vits2V210复刻马督工实践(Python3.10)

Bert-vits2更新了版本V210,修正了日/英的bert对齐问题,效果进一步优化;对底模使用的数据进行优化和加量,减少finetune失败以及电音的可能性;日语bert更换了模型,完善了多语言推理。 更多情报请参考Bert-vi…

【Openstack Train安装】五、Memcached/Etcd安装

本文介绍Memcached/Etcd安装步骤,Memcached/Etcd仅需在控制节点安装。 在按照本教程安装之前,请确保完成以下配置: 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Openstack Train安装】三、openstack安装…

PC端ssh连接到Android手机的Termux部署http服务器

1. 下载并安装Termux至Android手机 Releases termux/termux-app (github.com) https://github.com/termux/termux-app/releases 2. 手机端启动Termux,安装openssh #更新仓库 pkg up pkg install openssh #安装好后,启动sshd sshd问题1:如…

光学3D表面轮廓仪超0.1nm纵向分辨能力,让显微形貌分毫毕现

在工业应用中,光学3D表面轮廓仪超0.1nm的纵向分辨能力能够高精度测量物体的表面形貌,可用于质量控制、表面工程和纳米制造等领域。 与其它表面形貌测量方法相比,光学3D表面轮廓仪达到纳米级别的相移干涉法(PSI)和垂直扫描干涉法(VSI)&#x…

Influx集群解决方案(Influx Proxy篇)

InFluxDB 集群搭建 本次搭建使用influx proxy 介绍 github地址:https://github.com/chengshiwen/influx-proxy/ Influx Proxy 是一个基于高可用、一致性哈希的 InfluxDB 集群代理服务,实现了 InfluxDB 高可用集群的部署方案, 具有动态扩/缩容、故障恢复…

Salesforce服务云和营销云重大创新!通过大数据和AI赋能为客户提供非凡体验

4月6日,Salesforce宣布推出新的Service Cloud和Marketing Cloud功能,通过AI驱动的数字化语音、移动离线访问相关信息、Intelligence和CDP创新,使客户体验更加人性化。借助Salesforce与人工智能相结合的强大创新,企业可以提供个性化…