【开源框架】国内首个通用云计算框架,任意程序都可做成云计算。

大家好,欢迎来到停止重构的频道。

本期介绍一下我们的自研云计算框架,只需要放入脚本程序,即可让网站系统拥有云计算能力,且脚本程序无需与框架强关联,适合于想要快速扩展云计算能力,或者想对外提供SaaS服务的网站系统。

简单地说,云计算程序是运行时间较长或消耗物理资源较多的程序,如爬虫脚本、音视频转码引擎等,这类程序是不能让后端程序同步执行的(阻塞后端性能), 而是需要由云计算程序部分执行。

网站系统加入云计算程序部分的原因和意义,可以参考我们的往期视频《后端程序整合其他应用》。

框架优点

这个框架做到了:

  1. 云计算任务异步执行,不阻塞后端程序;

  2. 任务池抢占任务,保证任务有序执行;

  3. 完整的异常机制,任务执行意外中断,任务会被其他程序重新执行;

  4. 云计算脚本可单独调试,无需与框架强绑定;

  5. 新服务器启动即可完成集群扩展,无特殊配置;

这个框架名字叫hive,蜂巢。因为云计算程序本身就好像是一个蜂巢,多个蜜蜂领任务去采蜜,采完蜜回蜂巢再领任务,直到无任务为止。

hive是完全商用免费的,我们也提供了docker镜像,使用手册已经在我们的官网上了 ,代码也已上传到github。

 

下面将按照以下方面介绍 :

  1. 整体工作原理 

  2. 单个hive服务器的工作原理

整体工作原理

这里把云计算服务器看作hive服务器,后端与hive服务器集群之间,需要搭建RabbitMQ、Redis两个中间服务。

RabbitMQ作为任务池接收后端下发的任务,hive服务器会抢占任务并执行。一台hive服务器可以同时执行多个任务,当开始或完成任务时 hive服务器会通过调用API通知后端服务器。

由于采用了RabbitMQ的ACK机制,如果任务执行期间意外退出,如服务器断电等 ,那么任务会重新被其他hive服务器执行。

Redis作为任务进度的数据池,hive服务器会向Redis更新任务脚本的进度。

实际上就是把任务脚本的命令行log放到Redis中,后端程序可以按照需要从Redis中获取到任务进度 ,所以云计算脚本的开发上相当自由。

另外,Redis也作为hive服务器集群状态的数据池,Redis中会记录多个hive服务器的多个任务进程的状态。如果后端程序需要,也可以从Redis中获得任务状态。 

hive服务器集群的扩展是简单的, 新的hive服务器只需要连接相同的RabbitMQ和Redis服务即可,无需其他特别的配置。hive服务器也可以直接回收 ,执行中的任务会被其他hive服务器重新执行。

后端程序对接hive框架实际上是通过RabbitMQ和Redis实现的,如果后端程序使用的我们的Once框架的话,可以使用现成的模块。当然,其他框架也可以作为参考 。

单个hive服务器的工作原理

单个hive服务器由三部分组成:监控程序、引导程序、任务脚本。 我们也做好了docker镜像, 按官方说明即可快速搭建。

 

监控程序是Python3编写的,主要负责启动和监控引导程序,监控程序会根据配置和引导程序的繁忙程度启动多个引导程序的进程。

当引导程序意外或正常退出后,监控程序会启动新的引导程序进程 。另外,监控程序受supervisor监控,自身意外退出,也会被重新启动。

引导程序是c++编写的, 主要负责监听任务和任务变更指令(监听RabbitMQ), 通过命令行启动任务脚本,引导程序运行期间,会定期向Redis更新自身的状态以便监控程序监控。另外,为了防止长时间运行而造成内存异常等问题,引导程序每执行一次任务都会自动消亡,而非持续接收任务。 

任务脚本是可以用任意语言编写的(我们推荐使用python3), 这是因为实际上引导程序是通过命令行启动任务的。所以任务脚本编写时,也可以单独调试, 无需依赖hive框架 。

多个hive服务器间可以挂在同一个共享盘 ,任务脚本放入共享盘即可。

总结

hive框架的详细说明可以登入我们的官网查看, 我们提供单机版的和集群版的docker镜像。

 

当然,应一些朋友的建议 ,后续我们将会推出一个完整的通用云计算的系统产品, 包括前端、后端部分, 敬请期待。

在我们的三套框架之中 Hive是唯一一个完全从零开始写的,没有依赖任何的基础框架。

因为在2016年构建之初, 确实没有比较好的云计算框架。

当然,这种任务脚本的方式是为了简化云计算脚本开发, 简单放入即可运行, 如果希望更加复杂的云计算程序 ,如某些在线编辑引擎等 ,则可以对hive的引导程序进行二次开发。

Hive的具体编码设计、实现过程和相关基础知识 ,包括线程模型、线程同步、RabbitMQ、Redis、supervisor等 。内容实在有点多, 我们写在了我们已经出版的书《大型网站架构实战》之中, 有兴趣的小伙伴可以翻阅一下。

我们的三套框架没有必然的关联关系 ,任何一套框架都可以单独使用。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值