高考考试网
当前位置: 首页 高考资讯

serverless实现原理(教你3分钟搭建一个网站)

时间:2023-07-29 作者: 小编 阅读量: 4 栏目名: 高考资讯

您只需编写简单的、目的单一的云函数即可将它与您的腾讯云基础设施及其他云服务产生的事件关联。核心的代码片段完全由事件或者请求触发,平台根据请求自动平行调整服务资源。代码运行无状态,可以轻易实现快速迭代、极速部署。其他的服务器部署相关的事情,都交给云服务商。我们使用官方的Flask模板,这个模板的Flask环境相对更加完整,方便开发。我们首先需要一个RSS解析的框架,在Python中,有一个feedparser的框架,能够解析RSSurl。

作为一个开发者,应该都能理解一个网站从开发到上线,要经过很多繁琐的步骤。

编写代码,部署应用,部署数据库,申请域名,申请SSL证书,域名备案,到最终上线起码要几天时间。

作为一个不精通代码的业务玩家,当你想搞个网站玩玩时,经常会被淘宝贵得离谱的报价吓跑。

这两年Serverless的概念被炒得火热,顾名思义,“无服务”。今天的这篇文章,我想站在一个开发者的角度,带大家简单的体验下使用腾讯云Serverless来开发网站的整体流程。看看在Serverless的概念下,开发网站是不是变得更加简单了。

本文的主要内容:

  • Serverless概念解释
  • 3分钟部署一个网站
  • 10分钟开发一个在线RSS阅读小站
  • 腾讯Serverless Web Function的优缺点分析

我是蛮三刀,关注我的个人原创技术公众号:后端技术漫谈

首先放一个我部署好的RSS在线阅读器页面:

只要在url传入需要解析的RSS订阅地址,比如xxxx/rss?rssurl=https://blog.CSDN.net/qqxx6661/rss/list ,就可以解析出该RSS,并渲染成你想要的博客样式。

整个实现代码除了html模板,只需要4行代码。

Serverless概念

Serverless是一个怎样的运行原理呢?简单的解释下:

腾讯云云函数是腾讯云提供的 Serverless 执行环境。您只需编写简单的、目的单一的云函数即可将它与您的腾讯云基础设施及其他云服务产生的事件关联。

当然了,Serverless不是表示没有服务器,而表示当您在使用 Serverless 时,您无需关心底层资源,也无需登录服务器和优化服务器,只需关注最核心的代码片段,即可跳过复杂的、繁琐的基本工作。核心的代码片段完全由事件或者请求触发,平台根据请求自动平行调整服务资源。Serverless 拥有近乎无限的扩容能力,空闲时,不运行任何资源。代码运行无状态,可以轻易实现快速迭代、极速部署。

它的大致执行流程如下图:

所以,Serverless其实本质上是云服务上帮你整合了云资源,你只需要编写最核心的代码,比如一个请求过来如何处理和返回对应的数据。其他的服务器部署相关的事情,都交给云服务商。这样带来的最核心的好处是节省了大量资源,只有你的网站有人访问时,才会计算资源消耗的价格,大幅度降低了成本。

可能你只是想搭建一个博客,以前可能需要买一年的服务器,起码一年开销几百元。在Serverless下,如果你的博客访问量并不是很高,可能一年只要花费十几块钱。

3分钟部署一个网站

我们打开Serverless创建函数服务页面:

https://console.cloud.tencent.com/scf/list-create?rid=16&ns=default&keyword=WebFunc

选择Python3 Web函数模板:

接着可以设置一些基本信息,这里我啥也没修改,直接点击完成。

大概等待30秒,一个Serverless服务就创建完成了。

接下来,我们就被跳转到了代码编辑页面。由于我们在上面的选项里选了Python3 Web开发,所以代码默认有了一个最基本的Flask框架模板。(Flask是什么?是Python的一个Web开发框架,就像Java下面的SpringBoot一样,也能很轻松地开发一个Web服务。官方文档:https://flask.palletsprojects.com/en/2.0.x/)

模板代码已经有了路径(“/”)最基本的返回值,我们把它改几个字,然后点击左下角部署按钮。花费了十几秒部署完成后,点击测试,我们就能看到返回的Body了,如下图。这时候你访问页面,也返回了同样的结果。

一个最最基础的Web服务器就OK了,不需要买域名和HTTPS证书,不需要SSH登录服务器,不需要手动编译代码,。

10分钟开发一个在线RSS阅读小站

上面是牛刀小试,接下来稍微整一个复杂一点点的例子。

**我一直觉得rss阅读是一个虽然过时,但是其精神一直在传承的阅读方式。**比如微信的订阅号,可以说其本质也是一种RSS阅读,通过关注订阅,并获得更新文章的推送,来定制化你的阅读内容。

所以我想做一个RSS解析器,通过传入RSS的网址(很多网站还保留有这个网址,比如CSDN,比如阮一峰的博客等),能够渲染出该RSS链接里所有的文章,并展示在网页上。后面,还可以深度地修改页面的展示,做出一个微信订阅号网页版,也不是不可能,哈哈哈。

OK,花里胡哨的就不扯了,先开始实现一个最简单的事情,把RSS链接渲染出来。

我们使用官方的Flask模板,这个模板的Flask环境相对更加完整,方便开发。

我们首先需要一个RSS解析的框架,在Python中,有一个feedparser的框架,能够解析RSS url。

使用pip3 install feedparser安装feedparser:

接着我们在app.py加入代码:

import feedparser@app.route('/rss')def rss():feed = feedparser.parse(request.args.get('rssurl'))return render_template('rss.html', entries=feed.entries)

在这里,我进行了一波本地调试,看一下feed这个参数,拿到了什么:

可以看到,解析后的rss链接,被feedparser框架解析为了一个数组,每个entry是一个文章的标题,作者,链接等。

根据上面的参数名,我们再加入一个rss/html,放在templates文件夹中,里面写好了我稍微美化过的html页面,并且将每篇文章循环插入html中,这里用到了flask自带的渲染模板jinja2:

<html><head><title>RSS阅读博客</title><link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet"></head><body><script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.min.js"></script><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.slim.min.js"></script><div > <div ><div ><nav ><div ><ahref="#">RSS解析器</a><buttontype="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span ></span></button><div><ul ><li ><aaria-current="page" href="#">首页</a></li></ul><form ><inputtype="search" placeholder="Search" aria-label="Search"><buttontype="submit">Search</button></form></div></div></nav><div>{% for entry in entries %}<div ><h2><buttontype="button" data-bs-toggle="collapse" data-bs-target="#collapse{{ loop.index }}" aria-expanded="false" aria-controls="collapse{{ loop.index }}">{{ entry.title }} | {{ entry.published }}</button></h2><divaria-labelledby="heading{{ loop.index }}" data-bs-parent="#accordionExample"><div >{{ entry.summary | safe }}</div></div></div>{% endfor %}</div></div> </div></div></body></html>

两个文件修改完,直接点击部署然后访问腾讯云给我们分配的域名:

https://service-ehshqmzv-1252138314.cd.apigw.tencentcs.com/release/rss?url=https://blog.csdn.net/qqxx6661/rss/list

image-20210801114213652

可以看到,完美解析出了我CSDN博客的RSS流,并且可以一个个打开。动图见文章最上方。

Web Function的优缺点分析

可以看出来,Serverless开发一个网站和传统网站开发区别非常大,它撇去了传统开发中那些冗杂但是又不经常会去修改的配置和流程,让开发者专注于业务逻辑的开发。但是这种开发方式真的完美吗?我思考了一下它的优势和不足。

**最明显的优势便是它简化了开发的步骤,省去了很多部署的无聊工作量。**但是,它的简化是有代价的,简化是会牺牲很大一部分灵活性和可定制性的。简化能够好用的前提是,云服务商把这些事情做到了,并且做好了。如果你的网站需要大量复杂的逻辑,并且需要优化网关的配置,那么很多事情在Serverless下,至少在目前提供的Serverless下,还是做不到的。

上面说到的弊端,其实会带来一个很大的问题,就是沉没成本,当你花了很多时间在Serverless上,却发现有一些小的要求或者定制化,没法实现,这时你是去翻文档,提工单,还是选择老老实实买个虚机,自己手动重新部署呢。

当然,上述观点是一个开发者的视角来看的。

作为普通消费者,可能很多时候只需要部署一个静态网站,用来放一个博客,或者说推广下自己的公司和产品。那么Serverlss大概率是符合要求的。

除了上面的主要矛盾外,还有一点是我想提出的,就是目前在线代码编辑页面的调试功能有点太弱了。

在最开始的Python3 Web模板中,在线的依赖库貌似缺失了新版本的feedparser和flask,导致我在本地调试能够运行的代码放到Serverless上各种不成功,但是错误信息却很难找。导致我不得不在VS Code的终端里,一个手动开flask服务,一个去curl请求,才能看到报错信息。

当然,这个可能是我自己走的歪路,但是在页面上,很难一眼看出来Debug窗口在哪里。

在用户体验上,还有很多事情可以做。

总结

不知不觉又是一篇2500字的文章,一个完整的周末又没有了。

Serverless概念提出了好几年了,其产品形态总感觉还在摸索阶段,它的用户群体到底是开发者,还是普通消费者,其实还是会被产品形态所影响。

不管怎么说,Serverless在成本的节省上是有目共睹的,我也希望在我的云服务器过期后,能够把自己的博客和其他服务,部署在Serverless上,能够节省一大笔开销。光是成本这一点,就值得我不断关注着Serverless。

如果文章对你有帮助,请各位老板转发支持一下,你的支持和鼓励对我非常重要~

个人公众号:后端技术漫谈

    推荐阅读
  • 行车记录仪按键说明(行车记录仪按键说明详解)

    M键在行车记录仪开启状态下,按M键会在录像模式、拍照模式、视频播放模式、照片播放模式之间循环,,今天小编就来聊一聊关于行车记录仪按键说明?行车记录仪按键说明M键。△就是我们的紧急保存按钮,如果你发生你需要记录保存的情况按下这个按键记录仪会自动保存正在录制的视频和上一段视频,行车记录仪会忠实的记录下所发生的事情,如果你发生交通事故、遇到碰瓷等情况是一定记得按下此键。

  • 公司会每天查监控吗(如何知道办公期间是否在被企业监控)

    前段时间,偶然在网上刷到某公司员工,上班时间浏览招聘网站,结果被公司领导叫去谈话。要想知道这个问题,首先我们需要知道,有哪些行为可以被企业监控到。那么如何摆脱被监控呢,如果能找到在运行的监控软件,直接禁止启动,如果找不到又怀疑被监控了,可以通过重装系统来摆脱被监控的情况。当然如果是公司对企业员工进行的监控,那么就不建议重装系统了,毕竟这样做会被公司发现,违反公司的制度,可能得不偿失。

  • borrego是什么车 borrego是什么车价格

    霸锐是一款五门七座suv车型,这款车使用了一款3.8升自然吸气v6发动机。霸锐的前悬架使用了双横臂独立悬架,后悬架使用了多连杆独立悬架。多连杆独立悬架可以提高汽车的操控性和行驶稳定性。但是多连杆独立悬架的结构是比较复杂的,这种悬架的成本也是比较高的。霸锐搭载了全时四驱系统,并且使用了多片离合器式中央差速器。

  • 柚子和螃蟹能一起吃吗(柚子和螃蟹能不能一起吃)

    下面内容希望能帮助到你,我们来一起看看吧!柚子和螃蟹能一起吃吗吃螃蟹后就不要吃柚子,最好更是不要一起吃。螃蟹是一种海鲜,富含蛋白质。而柚子是一种新鲜水果,富含维生素C、维生素B和大量碳水化合物和氨基酸。两种食物时间间隔过短,很可能会导致维生素C和蛋白质结合,从而形成蛋白块,这种情况就容易形成胃石,不利于人体消化。如果一定要吃柚子,建议间隔至少两个小时。不建议吃螃蟹后马上吃柚子。

  • 纳米酶的详细介绍(新书推荐纳米酶学)

    作为人工模拟酶的一个崭新的分支,和天然酶相比,纳米酶具有稳定性高、制备方法简单、生产成本低、多功能性、催化活性可调、可大批量生产等优势。图2天然酶、人工模拟酶和纳米酶的发展史比较1过去的十余年是纳米酶这一领域飞速发展的黄金时代。从图3的统计数据看出,2007年阎锡蕴院士关于Fe3O4纳米酶的工作报导以后,与纳米酶相关的论文数和他引次数都呈现出指数型爆炸式增长。

  • 好听的游戏名字英文(好听的游戏名字英文有哪些)

    好听的游戏名字英文?以下内容大家不妨参考一二希望能帮到您!好听的游戏名字英文Bones骨遗忘.ForgottenFaith信念Patience、Magic’BornHater.Oldflame(旧情人)Heart。弃心替代品Substitute■°Destiny苏烟L1uoいTenderness温存▏末夕晴ヽmissDusty(尘封)LillabyLadyLuck妖媚□SunshineEdinburgh°南空justyou流受ranmuy/

  • 非洲求学之路小伙子(年少辍学的川南打工妹)

    全球之旅|我在黎巴嫩贝鲁特今天我在贝鲁特见到了第五位华人雷姐,她说,我的故事很平淡的,就是一个普普通通过日子的人。2010年,她毅然决然前往非洲中部一个叫刚果的国家。7,回到黎巴嫩两年婚后,雷姐老公给了她三个选择,第一学习阿拉伯语,第二学习法语,第三学习英语。雷姐抱着她儿子说,结婚以后,她生了一个儿子,在此之前长期漂泊身体不好流产宫外孕之类的两次,所以这个儿子是他第三个孩子。黎巴嫩丈夫和儿子

  • 滴滴下架群雄围剿(我爱我家韵达趣店探探猎豹上黑榜)

    App违法违规手机使用个人信息专项治理工作组要求上述App运营者自通报发出之日起30日内完成整改,逾期未完成整改的,工作组将建议相关部门依法予以处置。

  • 上海游玩攻略必去的景点(上海必去的景点推荐)

    上海必去的景点推荐作者:_CFT01****2119438外滩(TheBund),位于上海市中心区的黄浦江畔,它是上海的风景线,是到上海观光的游客必到之地外滩又名中山东一路,全长约1.5公里位于浦西,东临黄浦江,西面。

  • 马王堆汉墓女尸为什么千年不烂(马王堆汉墓女尸千年不腐的原因)

    马王堆汉墓女尸为什么千年不烂首先是近似真空的墓室条件,墓室筑在深达16米以下处,上面还有底经50-60米,高20多米的大封土堆,不透气,不渗水,封闭极严。而尸体又殓入多达6层的厚木板涂漆棺椁之中棺椁四周采用粘性和致密性很强的白膏泥、吸湿性很强的木炭填实。这层层“关卡”,使得水与空气的浸蚀无能为力,从而造成了一种与外界隔绝的独特环境,近于真空或即是真空。专家推测辛追生前可能有服用丹药的习惯。