原因
事件的原因是,最近家里的俩娃立刻要放暑假了,家里的老母亲早早的就规划好了姐姐弟弟的暑期少年宫课程,怎么办有些想上个课程一向没有”抢“到课程。平常带娃在少年宫上课的爸爸妈妈可能懂的,一般少年宫的课程都是提早预报名,然后会为了公正起见进行摇号,中者缴费。本来是一件比较合理的处理方法,但怎么办不住各位鸡娃的爸爸妈妈们的上有方针下有对策的路子。
第一阶段:靠数量提高命中率 ,咱们都各自报了许多不同课程,防止由于摇号没摇上,导致落空。咱们家也是相同操作~~~。可是这儿也会呈现另一种情况,当摇号完毕,咱们缴费期间,有的摇中家长,发现课程多了或许有些课程和课外兴趣班冲突,或许种种其他原因,不想再上暑期课程了,就会撤销这门课程。 即时你缴费了,后边也是能够撤销的,仅仅会扣除一些费用。 第二阶段:捡漏,有报多的家长,就有没有抢到合适课程的家长。没错,说的正是咱们家 哈哈。在我老婆规划中,咱们还有几门课程没有摇中,那这个时分怎么办呢?只能蹲守,人工不守时的登录查课,寄希望于有些家长退课了,咱们好第一时刻补上去。
当当当,作为一个程序员老父亲,这个时分终于排上用场了~~~,花了一个晚上,写了个守时查询脚本+告诉,当有课放出,咱们就告诉一下领导(老婆大人)定夺,话说这个小查课守时使命深受领导的高度表扬。 好了原因便是这样,下面咱们回到正题,给咱们实操下怎么运用阿里云的Serverless 函数,来构建这个小守时脚本。
架构
很简单的架构图,只用到了这么几个组件,
- Serverless FC 无服务器函数,承载逻辑主体
- OSS 存储中心成果数据
- RAM是对核算函数赋予人物使其有对应权限。
- 企业微信机器人,企业微信本身能够随意注册,拉个企业微信群,加入一个群机器人,就能够作为音讯触达端。
实践
函数核算FC
本次实操中,咱们需求先了解阿里云的函数核算FC几个概念,便利咱们后边操作了解:
相关官方资料:根本概念
下面我只列了本次操作涉及到的概念,更具体资料,主张参阅官方文档。
- 服务:服务是函数核算资源办理的单位,是符合微服务理念的概念。从业务场景出发,一个运用能够拆分为多个服务。从资源运用维度出发,一个服务能够由多个函数组成。
- FC函数:函数核算的资源调度与运行是以函数为单位。FC函数由函数代码和函数装备构成。FC函数 必须从属于服务,同一个服务下的一切函数同享一些相同的设置,例如服务授权、日志装备。函数的相关操作
- 层:层能够为您供给自界说的公共依靠库、运行时环境及函数扩展等发布与布置能力。您能够将函数依靠的公共库提炼到层,以削减布置、更新时的代码包体积,也能够将自界说的运行时,以层布置在多个函数间同享。
- 触发器:触发器是触发函数执行的方法。在事件驱动的核算模型中,事件源是事件的生产者,函数是事件的处理者,而触发器供给了一种集中、一致的方法来办理不同的事件源
创立函数
- 函数核算FC–> 使命–> 挑选创立函数
- 装备函数
这儿我截了个长屏,来给咱们逐个解说
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 在阿里云函数核算中的实践