函数计算中,我想实现这样一个功能,不知道官方有没有推荐的架构?同时只允许一个进程运行,这个用Serverless能实现吗?
1.我有一个爬虫,因为有qps限制,所以只能定时单线程爬取,爬取的数据最好丢到类似mq里面。
2.从mq里面获取数据,然后进行二次处理。
3.将二次处理结果,存放到某个存储。
4.根据规则,如果匹配到相关规则,就进行告警发送通知。
对于爬虫功能,您可以使用阿里云的函数计算服务(Function Compute)来实现。您可以创建一个Python函数来处理爬虫任务,并使用定时触发器来定期执行该函数。同时,您可以使用消息队列服务(如阿里云的MQS)来存储爬取到的数据,以便后续处理。
对于从MQS中获取数据并进行二次处理的功能,您可以创建另一个Python函数来实现。这个函数可以从MQS中接收消息,然后进行数据处理和分析。
对于将二次处理结果存放到某个存储的功能,您可以使用阿里云的对象存储服务(OSS)或其他云存储服务来存储处理后的数据。
对于根据规则发送告警通知的功能,您可以在第二个Python函数中添加相应的逻辑来实现。例如,您可以使用阿里云的短信服务(如阿里云的短信API)来发送告警通知。
关于只允许一个进程运行的问题,Serverless架构本身不支持限制单个函数实例的并发数。但是,您可以通过设置函数的最大执行时间和内存限制来间接实现类似的效果。例如,您可以设置函数的最大执行时间为5分钟,以确保在一个时间段内只有一个函数实例在运行。
这个可以给函数加一个弹性规则,最大实例数是 1,然后通过异步调用的方式,函数这边就会自动排队,一个一个处理。
——此回答整理自钉群:阿里函数计算官网客户
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。