当前位置: 首页 > news >正文

系统设计概念:生产 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 全景解析

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

相关文章:

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

在你使用的每个完美应用程序背后,都有一整套的架构、测试、监控和安全措施。今天,让我们来看看一个生产就绪应用程序的非常高层次的架构。 CI/CD 管道 我们的第一个关键领域是持续集成和持续部署——CI/CD 管道。 这确保我们的代码从存储库经过一系列测试…...

基于docker的onlyoffice使用--运行JavaSpringExample

背景 我之前看到有开源项目很好地集成了onlyoffice,效果要比kkfilepreview好(应当说应用场景不太一样)。本文是在window10环境,安装完Docker Desktop的基础上运行onlyoffice,并利用官网JavaSpringExample进行了集成。 …...

SQL server-excel数据追加到表

参考文章:SQL server 2019 从Excel导入数据_mssql2019 导入excel数据-CSDN博客 将excel数据导入到SQL server数据库的详细过程 注意:第一行数据默认为数据库表中的字段,所以这个必须要有,否则无法映射导入 问题1:ADD…...

深度学习-模型调试经验总结

1、 这句话的意思是:期望张量的后端处理是在cpu上,但是实际是在cuda上。排查代码发现,数据还在cpu上,但是模型已经转到cuda上,所以可以通过把数据转到cuda上解决。 解决代码: tensor.to("cuda")…...

Redis打包事务,分批提交

一、需求背景 接手一个老项目,在项目启动的时候,需要将xxx省整个省的所有区域数据数据、以及系统字典配置逐条保存在Redis缓存里面,这样查询的时候会更快; 区域数据字典数据一共大概20000多条,,前同事直接使用 list.forEach…...

深度学习毕设项目 深度学习 python opencv 动物识别与检测

文章目录 0 前言1 深度学习实现动物识别与检测2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存…...

leetcode 611. 有效三角形的个数(优质解法)

代码&#xff1a; class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int lengthnums.length;int n0; //三元组的个数//c 代表三角形最长的那条边for (int clength-1;c>2;c--){int left0;int rightc-1;while (left<right){if(nums[left]nums[r…...

Ubuntu使用Nginx部署前端项目——记录

安装nginx 依次执行以下两条命令进行安装&#xff1a; sudo apt-get update sudo apt-get install nginx通过查看版本号查看是否安装成功&#xff1a; nginx -v补充卸载操作&#xff1a; sudo apt-get remove nginx nginx-common sudo apt-get purge nginx nginx-common su…...

小航助学题库蓝桥杯题库c++选拔赛(22年1月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09; 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;...

centos用户相关命令

添加用户命令&#xff1a; adduser tony.wang useradd tony.wang 这两个命令都行&#xff0c;如果已经添加了会提示已经存在。 设置密码&#xff1a; passwd tony.wang 如果需要加入sudo组&#xff1a; usermod -aG sudo tony.wang 这个命令我在CentOS7上是不行的&#x…...

智能优化算法应用:基于哈里斯鹰算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于哈里斯鹰算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于哈里斯鹰算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.哈里斯鹰算法4.实验参数设定5.算法结果6.参考…...

Stability AI 新发布SDXL Turbo:一款实时文本到图像生成模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

基于Java SSM框架+Vue实现病人跟踪治疗信息系统项目【项目源码+论文说明】

基于java的SSM框架Vue实现病人跟踪治疗信息系统演示 摘要 病人跟踪治疗信息管理系统采用B/S模式&#xff0c;促进了病人跟踪治疗信息管理系统的安全、快捷、高效的发展。传统的管理模式还处于手工处理阶段&#xff0c;管理效率极低&#xff0c;随着病人的不断增多&#xff0c;…...

js一行压缩库

js一行压缩库 压缩 JavaScript 代码通常是为了减小文件大小&#xff0c;提高加载速度。有一些常见的工具和软件可用于这个目的。以下是其中一些&#xff1a; UglifyJS&#xff1a; UglifyJS 是一个流行的 JavaScript 压缩工具&#xff0c;可以通过命令行或作为一个 npm 包来使…...

管理库存和出货的软件

随着时代的信息化越来越成熟&#xff0c;库存和出货的管理使用专门的软件变得越来越普遍。一款优秀的库存和出货管理软件应具备高效性、实时性、安全性和灵活性&#xff0c;以满足企业的日常运营需求。本文将详细介绍一款管理库存和出货的软件及其功能。 一、软件介绍 &#x…...

保护关键信息基础设施网络安全,SSL证书来助力

近年来&#xff0c;随着信息科技的飞速发展和互联网的普及应用&#xff0c;保护关键信息基础设施网络安全变得越来越迫切和重要。而随着《关键信息基础设施安全保护条例》的发布&#xff0c;保护关键信息基础设施也成为运营者必须履行的义务。SSL证书作为保护传输数据安全的重要…...

Python实现学生信息管理系统(详解版)

Python实现学生信息管理系统-详解版 个人简介实验名称&#xff1a;学生信息管理系统系统功能实验步骤详讲添加入住学生信息删除学生的住宿信息修改学生的住宿信息查询学生的住宿信息显示所有学生住宿信息显示所有请假学生的信息 运行截图展示1.主界面2.添加新的入住学生信息3.显…...

企业计算机服务器中了mallox勒索病毒如何解密,mallox勒索病毒文件恢复

随着网络技术的不断发展&#xff0c;网络安全威胁也在不断增加&#xff0c;勒索病毒攻击企业计算机服务器的事件时有发生&#xff0c;并且勒索病毒的加密形式也越来越复杂。近期&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的计算机服务器遭到了mallox…...

Linux学习笔记 CenOS6.3 yum No package xxx available

环境CenOS [roothncuc ~]# cat /etc/issue CentOS release 6.2 (Final) Kernel \r on an \m安装gcc的时候提示没有包 [roothncuc ~]# sudo yum install gcc gcc-c libstdc-devel Loaded plugins: refresh-packagekit, security Setting up Install Process No package gcc a…...

【探索Linux】—— 强大的命令行工具 P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )

阅读导航 引言一、信号捕捉1. 内核实现信号捕捉过程2. sigaction() 函数&#xff08;1&#xff09;函数原型&#xff08;2&#xff09;参数说明&#xff08;3&#xff09;返回值&#xff08;4&#xff09;函数使用 二、可重入函数与不可重入函数1. 可重入函数条件2. 不可重入函…...

微信小程序项目实战:从npm安装Vant Weapp到解决样式冲突的完整避坑指南

微信小程序工程化实战&#xff1a;Vant Weapp集成与样式冲突解决方案全解析 第一次在小程序里引入Vant Weapp时&#xff0c;我对着满屏错位的组件样式发呆了半小时——原本优雅的按钮变成了扭曲的色块&#xff0c;表单元素叠在一起像抽象画。这不是个例&#xff0c;根据社区反…...

GEO优化可以覆盖哪些搜索平台

这是一个非常现实的问题。企业投放资源做GEO&#xff0c;当然希望覆盖面越广越好。那么GEO优化到底能覆盖哪些平台&#xff1f;覆盖到什么程度&#xff1f;不同平台的GEO逻辑有什么差异&#xff1f;GEO平台覆盖的三个层级第一层级&#xff1a;通用大模型AI平台&#xff08;核心…...

基于MAX78000与CNN的智能螺栓巡检小车:嵌入式AI实战解析

1. 项目概述与核心思路在轨道交通的日常运维中&#xff0c;螺栓的紧固状态检查是一项繁重且关键的任务。无论是轨道上的紧固螺栓&#xff0c;还是列车转向架、轮对轴承上的关键螺栓&#xff0c;其松动或失效都可能引发严重的安全事故。传统的人工巡检方式不仅效率低下&#xff…...

基于PGA2311的树莓派Hi-Fi模拟音量控制器设计与实现

1. 项目概述&#xff1a;为树莓派DAC打造的高品质模拟音量控制器玩过树莓派音频播放器的朋友都知道&#xff0c;用上像PCM1794A这类高性能DAC芯片后&#xff0c;音质确实能上一个台阶&#xff0c;但有个不大不小的麻烦&#xff1a;这类芯片本身不带音量控制。软件调音量&#x…...

从单体到事件驱动的生死跃迁:DeepSeek架构委员会认证的6阶段迁移路线图(含风险热力图与回滚触发阈值表)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;从单体到事件驱动的生死跃迁&#xff1a;DeepSeek架构委员会认证的6阶段迁移路线图&#xff08;含风险热力图与回滚触发阈值表&#xff09; 向事件驱动架构&#xff08;EDA&#xff09;演进不是功能迭代&…...

Unlock-Music:浏览器中一键解锁加密音乐文件的完整指南

Unlock-Music&#xff1a;浏览器中一键解锁加密音乐文件的完整指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: http…...

AutoPentest:面向红队的渗透测试决策引擎架构解析

1. 这不是又一个“自动化扫描器”&#xff0c;而是一套能替你做决策的渗透测试工作流引擎AutoPentest这个名字&#xff0c;第一眼容易让人联想到Nmap加个for循环、或者Burp Suite里点几下Intruder——但实际用过的人很快会意识到&#xff1a;它根本不在同一个维度上。我第一次在…...

大厂校招变了:AI 能力正在进入笔试和面试

最近不少同学投递校招时&#xff0c;应该已经发现一个变化&#xff1a; 以前 JD 里写的是“熟悉 Python / Java / SQL / Office 优先”。 现在越来越多岗位开始出现新的描述&#xff1a; “熟练使用 AI 工具者优先” “了解大模型应用者优先” “具备 AI 辅助编程经验优先” “…...

DeepSeek-R1代码补全实测报告:37个真实项目、8类编程语言、48小时压测后,我删掉了Copilot

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek-R1代码补全实测报告总览 DeepSeek-R1 是深度求索&#xff08;DeepSeek&#xff09;推出的开源大语言模型&#xff0c;专为代码理解与生成任务优化。本章聚焦其在主流 IDE 环境中代码补全能力的…...

Sora 2原生MP4输出不兼容Premiere Pro?揭秘H.264/H.265封装层4大隐性缺陷(附MediaInfo诊断模板+自动修复脚本)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Sora 2原生MP4输出不兼容Premiere Pro的根源定位 Sora 2生成的原生MP4文件虽符合ISO/IEC 14496-14规范&#xff0c;但其底层封装结构与Adobe Premiere Pro对时间码、元数据及视频流编码参数的严格校验逻辑存在…...