写点什么

为了娃的暑期课,老父亲竟然用上了阿里云高大上的 Serverless FaaS!!!

作者:WuKongCoder
  • 2023-07-04
    浙江
  • 本文字数:3235 字

    阅读完需:约 11 分钟

为了娃的暑期课,老父亲竟然用上了阿里云高大上的 Serverless FaaS!!!

起因

事件的起因是,最近家里的俩娃马上要放暑假了,家里的老母亲早早的就规划好了姐姐弟弟的暑期少年宫课程,奈何有些想上个课程一直没有”抢“到课程。平时带娃在少年宫上课的父母可能懂的,一般少年宫的课程都是提前预报名,然后会为了公平起见进行摇号,中者缴费。本来是一件比较合理的处理方式,但奈何不住各位鸡娃的父母们的上有政策下有对策的路子。



第一阶段:靠数量提高命中率 ,大家都各自报了很多不同课程,防止因为摇号没摇上,导致落空。我们家也是一样操作~~~。但是这里也会出现另一种状况,当摇号结束,大家缴费期间,有的摇中家长,发现课程多了或者有些课程和课外兴趣班冲突,或者种种其他原因,不想再上暑期课程了,就会取消这门课程。 即时你缴费了,后面也是可以取消的,只是会扣除一些费用。

第二阶段:捡漏,有报多的家长,就有没有抢到合适课程的家长。没错,说的正是我们家 哈哈。在我老婆规划中,我们还有几门课程没有摇中,那这个时候怎么办呢?只能蹲守,人工不定时的登录查课,寄期望于有些家长退课了,我们好第一时间补上去。


当当当,作为一个程序员老父亲,这个时候终于排上用场了~~~,花了一个晚上,写了个定时查询脚本+通知,当有课放出,咱们就通知一下领导(老婆大人)定夺,话说这个小查课定时任务深受领导的高度表扬。好了起因就是这样,下面我们回到正题,给大家实操下如何使用阿里云的 Serverless 函数,来构建这个小定时脚本。

架构

很简单的架构图,只用到了这么几个组件,


  • Serverless FC 无服务器函数,承载逻辑主体

  • OSS 存储中间结果数据

  • RAM 是对计算函数赋予角色使其有对应权限。

  • 企业微信机器人,企业微信本身可以随便注册,拉个企业微信群,加入一个群机器人,就可以作为消息触达端。


实践

函数计算 FC


本次实操中,我们需要先了解阿里云的函数计算 FC 几个概念,方便我们后面操作理解:


相关官方资料:基本概念

下面我只列了本次操作涉及到的概念,更详细资料,建议参考官方文档。


  • 服务:服务是函数计算资源管理的单位,是符合微服务理念的概念。从业务场景出发,一个应用可以拆分为多个服务。从资源使用维度出发,一个服务可以由多个函数组成。

  • FC 函数:函数计算的资源调度与运行是以函数为单位。FC 函数由函数代码和函数配置构成。FC 函数 必须从属于服务,同一个服务下的所有函数共享一些相同的设置,例如服务授权、日志配置。函数的相关操作

  • 层:层可以为您提供自定义的公共依赖库、运行时环境及函数扩展等发布与部署能力。您可以将函数依赖的公共库提炼到层,以减少部署、更新时的代码包体积,也可以将自定义的运行时,以层部署在多个函数间共享。

  • 触发器:触发器是触发函数执行的方式。在事件驱动的计算模型中,事件源是事件的生产者,函数是事件的处理者,而触发器提供了一种集中、统一的方式来管理不同的事件源

创建函数

  1. 函数计算 FC--> 任务--> 选择创建函数



  1. 配置函数


这里我截了个长屏,来给大家逐个解释


tips: 如果大家也有截长屏需求,推荐 chrome 中的插件:Take Webpage Screenshots Entirely - FireShot


  • 函数方式:我的小脚本是 python 代码,我直接使用自定义运行环境,如果你想了解这三种方式区别,建议详细阅读这篇文章:函数计算支持的多语言运行时信息

  • 服务名称:我们如果初次创建,选择创建一个服务,然后填入自己设定的服务名字即可

  • 函数代码:这里我选择运行时 python 3.9 , 示例代码(代码等我们创建完成之后,再填充自己的代码逻辑)

  • 高级配置: 这里如果是初学者,个人建议尽量选最小配置,因为函数计算是按你使用的资源*次数 收费的, 这里我改成了资源粒度,0.05vCpu 128MB,并发度 1

  • 函数变量:我暂时不需要,就没有设置,如果你需要外部配置一些账号密码,可以使用这种方式来配置

  • 触发器:这里展示出了函数计算的协同作用,可以通过多种云服务产品来进行事件通知触发,我们这里的样例只需要一个定时轮询调度,所以这里我使用了定时触发器,5 分钟调用一次。


配置依赖


函数整体创建成功之后,点击函数名称,进入函数详情页



函数代码模块填充本地已经调试好的代码, 测试函数,发现相关依赖并没有,这里我们需要编辑层,来将 python 相关依赖文件引入, 点击上图中编辑层



我选择的是在线构建依赖层,按照 requirements.txt 的格式书写,然后就可以在线安装了,很方便。创建成功之后,回到编辑层位置,选择刚开始创建的层,点击确定,既可,这样就不会再报相关依赖缺失了。

配置 OSS 映射

我的小脚本里,需要存储中间数据,因为函数计算 FC 本身是无状态的,所以需要借助外部存储,很自然的就会想到用 OSS 来存储。但是如何正确的使用 OSS 桶来存储中间数据呢?官方关于 python 操作 OSS 的教程:python 操作 OSS



# -*- coding: utf-8 -*-import oss2# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')# Endpoint以杭州为例,其它Region请按实际情况填写。bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
复制代码


这里操作基本都会使用到 AK,SK。 但是基于云上的安全的实践操作以及要定期更换 ak,sk 来保证安全,尽量不要直接在代码中使用 ak, sk 来调用 api 。那是否有其他更合理的操作方式?我找到了这篇文章 配置OSS文件系统


函数计算支持与 OSS 无缝集成。您可以为函数计算的服务配置 OSS 挂载,配置成功后,该服务下的函数可以像使用本地文件系统一样使用 OSS 存储服务。


个人推荐这种解决方案


  • 只需要配置对应函数所授权的角色策略中,加上对相应的挂载 OSS 桶的读写权限

  • 这个操作符合最小粒度的赋予权限,同时也减少代码开发量,python 可以像操作本地磁盘一样,操作 oss,简直不要太方便~~~

  • 同时也不需要担心所谓的 ak sk 泄漏风险以及需要定期更换密钥的麻烦,因为就不存在使用 ak sk


我最后也是用这种方式,配置了 oss 文件系统映射到函数运行时的环境磁盘上。

企业微信机器人

企业微信可以直接注册,不需要任何费用,之后两个人拉一个群,添加一个群机器人即可。可以参考官方文档:如何使用群机器人 来用 python 发送群消息,很简单的一段代码既可完成发送消息通知。


wx_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx-xxxxx-xxxxx"def sendWechatBotMsg(msg,collagues):    """艾特指定同事,并发送指定信息"""    data = json.dumps({"msgtype": "text", "text": {"content": msg, "mentioned_list":collagues}})    r = requests.post(wx_url, data, auth=('Content-Type', 'application/json'))
复制代码


最后效果如图所示:


总结

通过日常生活中的一个小场景,实践了下阿里云的高大上的 Serverless FC 服务。个人选择这种无服务器函数计算,也是结合了成本的因素。给大家对比下两种方案价格:


  • 传统云主机方式:


阿里云官方 ECS 主机的定价:实例价格信息最便宜的一档: 1vCPU 1GB 实例, 每个月也要 34.2 RMB 还没有包括挂载的磁盘价格 ,以及公网带宽费用



  • Serverless FC


而使用无服务器函数计算服务, 按使用时长和资源计费,像我这种最小资源粒度就可以满足同时调度次数是周期性的,大大消减了费用, 我跑了大概一周的时间 大概花费了 0.16 RMB,哈哈 简直是不能再便宜了。大家感兴趣的也可以动手实践下自己的需求场景。



云计算已经是当下技术人员的必学的一门课程,如果有时间也鼓励大家可以多了解学习,提升自己的专业能力。感兴趣的朋友,如果有任何问题,需要沟通交流也可以添加我的个人微信 coder_wukong,备注:云计算,或者关注我的公众号 WuKongCoder 日常也会不定期写一些文章和思考。


如果觉得文章不错,欢迎大家点赞,留言,转发,收藏 谢谢大家,我们下篇文章再会~~~


参考资料

中国唯一入选 Forrester 领导者象限,阿里云 Serverless 产品能力全球第一


函数计算支持的多语言运行时信息


阿里云OSS文档:python 操作 OSS


阿里云函数计算文档:配置OSS文件系统


企业微信文档:如何使用群机器人


让 Serverless 更普惠


Serverless 在阿里云函数计算中的实践

发布于: 2023-07-04阅读数: 28
用户头像

WuKongCoder

关注

WuKongCoder 欢迎关注 2017-11-15 加入

云计算科普,大数据入门,人工智能小白,排名分先后,记录个人所思所悟

评论

发布
暂无评论
为了娃的暑期课,老父亲竟然用上了阿里云高大上的 Serverless FaaS!!!_云计算_WuKongCoder_InfoQ写作社区