我们的小程序每天早上都白屏,真相是。。。

大家好,我是程序员鱼皮。最近我们在内测一款面试刷题小程序,没错,就是之前倒下的 “面试鸭”!

在我们的内测交流群中,每天早上都会有同学反馈:打开小程序空白,没任何内容且登录不上。

然后过了一会儿后,发现又恢复了,难道是我们又又又又写出了什么诡异的 bug 吗?

哈哈哈,其实不然,因为我们面试鸭的后端服务 Serverless 化了!

那什么是 Serverless 呢?这事说来话长,但是我们长话短说,想要理解这个名词,还得从远古时代说起。。。

远古时代

在很久很久之前,一家公司如果要上线一个网站,需要啥呢?

需要一台物理服务器对吧。通过在服务器上安装虚拟化软件,可以将一个配置很高的物理机划分成多个 “小服务器”,一台安装 Nginx、一台安装后端服务、一台安装数据库等等。

如果当前网站的用户量大了,那么手动扩个容,多划一台 “小服务器” 给后端服务。当服务挂了需要重启服务,当遇到业务问题需要登录到服务器上查看日志。

这个时期,公司需要专门分配人员来运维管理这些服务器,不仅需要处理服务器的资源问题,还需要帮忙排查日志、发布部署服务等。

云服务商时代

到现在,市面上绝大部分的公司都不需要主动去购买物理服务器了,而是从云厂商手上买云服务器。

相信很多同学都买过大厂的云服务器,我们可以在买来的服务器上安装 Nginx、Tomcat、部署静态资源和后端 Java 服务,完全不需要管什么物理机,不用考虑这个服务器线下的机房情况,比如机房内有没有开空调、服务器会不会过热之类的。

虽然没有实体的物理机,但是使用起来还是有服务器的概念,当资源不够的时候,还是需要手动配置扩容(一般就是花钱升级配置)。

即使在云服务器上安装 Docker 容器来部署项目,还需要人工对集群进行维护和容量规划,需要分配人员来维护管理这些云服务器。

无服务器时代 Serverless

因为 “有服务器” 的概念,即使有很多自动化的运维工具,还是需要运维人员来管理配置。

那假设没有服务器呢?没服务器还需要人来管啥吗?

这就是 Serverless,直译过来就是 无服务器

这里的无服务器不是说真的不需要服务器,而是一些云厂商进行了封装,让我们这些使用者感受不到服务器的存在。

举个例子,如果我们想部署一个网站,在使用上可能就是在页面上填写代码仓库、指定要发布的分支、设置一下端口。

然后再给服务配置一下使用的资源,就完事儿了!

从上图的配置中我们可以看到,默认实例数是 0 ,表示空闲的时候不需要实例副本,如果当前实例的 CPU 使用率大于 60 % 就自动扩容,最多可以扩容至 5 个实例。

相比于以前要自己登录到服务器上执行命令来部署程序,使用这种界面化操作,是不是简单了很多?是不是完全感受不到服务器的存在?

并且我们还可以直接从界面查看服务日志、监控服务等,完全不需要 SSH 远程连接到服务器并用一通 Linux 命令来操作。

这样一来运维复杂度都交给云服务厂商了,我们基本上不需要承担运维工作。

相信看到这大家对 Serverless 应该有点了解了,已经体会到它的好处了。

注意,这篇文章中,所说的 Serverless 其实更多指的是 Serverless 化,即无机器化、免运维化。

而很多时候 Serverless 指的是另一种含义,即 Serverless Computing 架构:FaaS (函数即服务)+ BaaS(后端及服务)。也是亚马逊在 2014 年推出的 FaaS 服务 Lambda,才将 Serverless 带入大众视野。

这里我就不展开解释什么叫 FaaS、BaaS 了,有兴趣的同学可以自行查阅资料, 想看的人也可以留言,如果多的话后面我再出一篇文章。

回到面试鸭的问题

说了这么多,有些同学可能要问,所谓的 Serverless 和面试鸭每天早上白屏的问题有什么关系吗?

哈哈,眼尖的同学可能从上面的配置中就已经发现问题了。

没错就是这个实例副本数!面试鸭后端服务最小的副本数设置的就是 0 !

也就是说如果很长一段时间没有人访问面试鸭的服务,那么实例数就会减少到 0 ,一旦有用户在这个时候访问面试鸭,那么就需要重新启动实例,这个过程就是所谓的冷启动(Cold start)。

其实很好理解,就好比我们在 IDEA 中启动 Java 程序一样,它需要一些时间才能把服务启动好。

对应到 Serverless 中,如果没有可用的容器实例,此时请求过来,它就需要启动一个新容器,新容器的分配、启动、加载程序,都需要时间。

所以,冷启动会产生延迟时间,这也是为什么很多人强推应用的云原生化,追求程序的快速启动。

正常情况下半夜没人访问面试鸭,导致实例都关了,一些同学一大早打开面试鸭,触发冷启动,因为延迟原因导致登录不上且没面试题,过一段时间后,容器启动完毕,此时访问又一切正常。

看到这应该有同学能想到解决方法,把最小实例数改为 1 不就好啦?

哈哈,确实如此。之所以最小实例副本设置为 0,是因为 Serverless 服务是 按时计费 的,因为面试鸭还在内测阶段,用户数不多,使用时长也并不长,所以我们就能省则省啦~

这个按时付费,也是 Serverless 的一个优势,低峰期的时候甚至可以 0 支出呢!也比较适合学习项目部署的朋友。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

感知机简介

感知机简介 导语感知机简单逻辑电路实现权重和配置与/或/与非与门实现与非门实现或门实现 线/非线性单/多层感知机异或 总结参考文献 导语 学习感知机有助于更好的理解深度学习的神经元、权重等概念,感知机的结构和概念很简单,只要学过基本线性代数、数…

Web 安全基础理论

Web 安全基础理论 培训、环境、资料、考证 公众号:Geek极安云科 网络安全群:624032112 网络系统管理群:223627079 网络建设与运维群:870959784 移动应用开发群:548238632 短视频制作群: 744125867极安云…

Star-CCM+通过将所有部件创建一个区域的方式分配至区域后子区域的分离,子区域材料属性的赋值,以及物理连续体的创建方法介绍

前言 上次介绍了将零部件分配至区域的方法与各个方法之间的区别,本文将继续上次的讲解,将其中的“将所有部件分配至一个区域”的应用进行补充。 如下图所示,按照将所有部件创建一个区域的方式分配至区域后,在区域下就会有一个区域…

Marin说PCB之如何快速打印输出整板的丝印位号图?

当小编我辛辛苦苦加班加点的把手上的板子做到投板评审状态的时候,坐在我旁边的日本同事龟田小郎君说让我把板子上的丝印也要调一下,我当时就急了,这么大的板子,将近1W多PIN 了都,光调丝印都要老半天啊,而且…

【ytb数据采集器】按关键词批量爬取视频数据,界面软件更适合文科生!

一、背景介绍 1.1 爬取目标 用Python独立开发的爬虫工具,作用是:通过搜索关键词采集油管的搜索结果,包含14个关键字段:关键词,页码,视频标题,视频id,视频链接,发布时间,视频时长,频道名称,频道id,频道链接,播放数,点赞数,评论数…

MATLAB 点云随机赋色 (68)

MATLAB 点云随机赋色 (68) 一、算法介绍二、算法介绍1.代码2.结果三、数据链接一、算法介绍 读取的点云本身带有颜色信息,有时我们需要为每个点随机赋予一种颜色,下面是具体效果和实现代码,以及使用的数据: 二、算法介绍 1.代码 代码如下(示例): % 读取点云文件 f…

linux中进程相关概念(一)

什么是程序,什么是进程,有什么区别? 程序是静态的概念,当我们使用gcc xxx.c -o pro进行编译时,产生的pro文件,就是一个程序。 进程是程序的一次运行活动,通俗点就是说程序跑起来了就是进程。 …

TypeScript学习日志-第二十一天(声明文件d.ts)

声明文件d.ts 在使用 Typescript 并使用第三方库 的时候 我们会发现会有很多的提示或补全,这都是声明文件起的作用,但是有写冷门的第三方库是没有声明文件的,这时候引用就会报错,我们就使用 express 库作为例子来展示一下&#x…

马蹄集oj赛(双周赛第二十六次)

目录 斐波那契数列的组合 三国杀 数列分段 小码哥的跳棋游戏新编 能量供应 小码哥爱数字 最小串 小船过河 摘果子 泼墨淋漓 很重的枪 小码哥的布阵指挥 斐波那契数列的组合 #include<bits/stdc.h> using namespace std;// 斐波那契数列 1 1 2 3 5 8 13 21 34…

pytorch加载模型出现错误

大概的错误长下面这样&#xff1a; 问题出现的原因&#xff1a; ​很明显&#xff0c;我就是犯了第一种错误。 网上的修改方法&#xff1a; 我觉得按道理哈&#xff0c;确实&#xff0c;蓝色部分应该是可以把问题解决了的​。​但是我没有解决&#xff0c;因为我犯了另外一个错…

[Linux]如何在Ubuntu 22.04系統安裝Node-red?

Node-red是一個建立在Node.js上的視覺化程式設計工具&#xff0c;其常見的應用情境為建置或轉換各項硬體之間的通信協定的物聯網或工聯網場域&#xff0c;其可藉由設置來安裝第三方應用模組來建置多樣的通信協定節點&#xff0c;包含modbus in/out, mqtt in/out, websocket in/…

Mac YOLO V9推理测试

环境&#xff1a; Mac M1 (MacOS Sonoma 14.3.1) Python 3.11PyTorch 2.1.2 一、准备工作 工程及模型下载&#xff1a;​​​​​​​https://github.com/WongKinYiu/yolov9 git clone https://github.com/WongKinYiu/yolov9.git 克隆后安装相关依赖&#xff08;没啥依赖好装…

全网最详细教学如何部署JVS-无忧企业文档

无忧企业文档项目直达地址 项目的简单介绍 JVS是面向软件开发团队可以快速实现应用的基础开发框架&#xff0c;采用微服务分布式框架&#xff0c;提供丰富的基础功能&#xff0c;集成众多业务引擎&#xff0c;它灵活性强&#xff0c;界面化配置对开发者友好&#xff0c;底层容…

2024年软件测试最全jmeter做接口压力测试_jmeter接口性能测试_jmeter压测接口(3),【大牛疯狂教学

既有适合小白学习的零基础资料&#xff0c;也有适合3年以上经验的小伙伴深入学习提升的进阶课程&#xff0c;涵盖了95%以上软件测试知识点&#xff0c;真正体系化&#xff01; 由于文件比较多&#xff0c;这里只是将部分目录截图出来&#xff0c;全套包含大厂面经、学习笔记、…

日志打印传值 传引用 右值引用性能测试(Linux/QNX)

结论 Linux平台和qnx平台优化后传值性能都是比传引用的差&#xff0c;也比传右值的差&#xff0c;因此传参时有必要传递引用。 测试代码 #include <cstdint> #include <ctime> #include <string>#ifdef __linux__#define ITERATIONS 10000000 #else#defin…

Windows命令行一键安装、配置WSL的方法

本文介绍在Windows电脑中&#xff0c;通过命令行的方式&#xff0c;快速、方便安装适用于Linux的Windows子系统&#xff08;Windows Subsystem for Linux&#xff0c;WSL&#xff09;的方法。 WSL是由微软开发的一项功能&#xff0c;允许在Windows操作系统上运行Linux发行版系统…

expected an expression报错

“expected an expression” 是一种编程错误&#xff0c;通常发生在程序中某个地方需要一个表达式&#xff08;expression&#xff09;的位置&#xff0c;但实际上没有提供一个有效的表达式。 据此&#xff0c;我在main.h—define宏定义中发现了问题&#xff0c;即&#xff1a;…

excel中怎么跳转到指定的单元格?

也许你会有这样的需求&#xff0c;如A1单元格中显示B100这种单元格地址&#xff0c;怎么做以点一下就跳转到B100&#xff1f; 一、设置公式 B1HYPERLINK("#"&MID(CELL("FILENAME",A1),FIND("]",CELL("FILENAME",A1))1,99)&&…

找出100~200的全部素数

解题思路&#xff1a; 判别 m 是否为素数的算法是这样的&#xff1a;让 m 被2~除&#xff0c;如果 m 不能被2~之中任何一个整数整除&#xff0c;就可以确定 m 是素数。为了记录 m 是否为素数&#xff0c;可以用一个布尔变量 prime 来表示。在循环开始时先设 prime 为真…

品鉴中的精神内涵:如何通过红酒品味生活的美好与哲学

红酒不仅仅是一种物质享受&#xff0c;更是一种精神体验。在品鉴云仓酒庄雷盛红酒的过程中&#xff0c;我们能够品味到生活的美好与哲学&#xff0c;感受到红酒所蕴含的精神内涵。 红酒的精神内涵源于其酿造过程中所融入的时间和匠心。一瓶上好的红酒需要经过长时间的陈年&…