1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【网站架构】云计算 大数据时代如何调用云计算 爬虫数据程序

【网站架构】云计算 大数据时代如何调用云计算 爬虫数据程序

时间:2022-08-21 04:27:54

相关推荐

【网站架构】云计算 大数据时代如何调用云计算 爬虫数据程序

本期,我们来聊一下后端程序整合其他应用。

对于这个问题,可能很多人会一笑而过,整合其他应用不就是根据其软件说明对接吗(数据库、SaaS服务)?

但是,云计算、大数据时代,大型网站系统已经不单单是前端、后端程序了。SaaS等云服务也很难完全满足网站系统的全部云计算需求。

比如我们自己写了一个需要长时间运行的Python爬虫程序,后端程序怎么调用呢?通过命令行方式调用吗?

可以是可以,但不可行。

至少对于这种需要长时间运行的程序是不可行的。所以,这里讨论的需要整合的其他应用,并不是指数据库、非关系型数据库、第三方SaaS服务等对接方便的程序。而是指爬虫程序等自己开发的程序,或者需要云服务化的引擎程序,如音视频转码合成引擎等。

我们将分两部分进行讨论

运行时间很短,需要同步调用的程序

运行时间较长,需要异步调用的程序

运行时间很短,需要同步调用的程序

运行时间很短,需要同步调用的程序,如生成写入某些小文件、获取某些文件数据的脚本程序。

对于这类程序,其实通过命令行调用即可。因为运行时间不长,也就是占用资源其实不多,且需要同步返回结果,所以并不需要考虑太多。

当然,除了命令行调用,还可以使用其他rpc工具调用,或者通过一些工具转换为动态库再调用。

运行时间较长,需要异步调用的程序

接下来是运行时间长,需要异步调用的程序,这类程序,我们一般称其为云计算程序。对于云计算程序有很多定义,但都是易懂的同时又仿佛什么都没说。

我们对于云计算程序的定义很简单,就是需要在服务器长时间运行甚至是一直运行的程序,而后端程序是运行时间很短的程序(整合其他程序)。

云计算程序在现今一些具有规模的系统中已经十分普遍了,如爬虫程序、音视频转码合并引擎、智能数据治理程序、AI推荐算法程序等。当然,这些程序大部分可以通过使用第三方SaaS服务(云服务)完成, 我们也是比较推荐在项目起步阶段优先选择第三方SaaS服务,

但是难以避免的是,平台越来越大 数据私密性、程序定制需求也会越来越高,而且从长远来看,长期使用第三方SaaS服务的话成本也是比较高的。

所以,大型网站系统终归会拥有自身的云计算部分,对于这类云计算程序,因为它们运行期间会占用比较多的资源,一台服务器也只能同时运行有限个云计算程序(一般是几十/几百个)。

如果直接通过后端程序使用命令行同步调用的话,会阻塞其他请求,严重影响系统整体性能, 而且后端接口一般有超时强制回收机制,云计算程序可能会无法持续运行。

另外,一台服务器运行云计算程序的个数也难以控制,可能导致一台服务器运行过多云计算程序反而运行效率更低,也可能出现内存枯竭等原因而导致服务器宕机。

所以,云计算程序是需要特殊处理的。一般做法是,在后端程序与云计算程序中间加一个任务池实现异步调用,这个任务池一般就是消息队列,如RabbitMQ等。

后端程序向任务池发布任务,云计算程序空闲时再向任务池领取任务,这样就能保证云计算程序更加有序地执行。

另外,扩展云计算程序服务器也是简单的,由于后端部分与云计算部分是通过任务池间接关联的 ,所以如果积压的任务过多,直接扩展一个云计算程序服务器就可以了。

当然,任务池仅能满足云计算程序最基本的需求, 整个云计算程序运行的机制仍然是复杂的,因为我们还需要考虑任务状态、任务进度、一键停止、程序消亡等机制。

遵从 “没有趁手的工具就做一个” 的程序员修养,我们做了这样的框架,名叫hive,蜂巢。因为云计算程序本身就好像是一个蜂巢,多个蜜蜂领任务去采蜜,采完蜜回蜂巢再领任务,直到无任务为止。

hive框架已经发布在我们的官网上了,有兴趣的小伙伴可以下载尝试一下, 我们下一期会详细介绍这个框架。当然,我们也相信会有其他同类型的框架,但我们在构造之初,确实没有太好的框架。

总结

云计算、大数据时代,网站系统已经不单单包含前端、后端部分,还有云计算部分。

云计算部分是区别于前端、后端部分的第三部分,专门运行任务时间较长、或者物理资源消耗较多的程序。

云计算程序部分往往也是网站系统的真正技术竞争力,虽然很多人认为SaaS服务能快速解决这个问题。但是实际上,哪家平台愿意共享他们的核心云计算能力呢?况且,SaaS服务本身就是云计算程序 ,没有云计算框架,如何实现可靠的SaaS服务。

针对云计算程序部分,如果大家有更好的解决方案,可以写在评论区或者到我们的技术交流群讨论。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。