六月份比较有趣的事情应该是入门了golang,然后顺手用golang写了一个基于ffmpeg的C/S分布式转码应用。
大致架构就是一堆client连接到server上,server分配视频转码任务到client端进行转码,转码完成后再传到server端。其实很久前就想搞出来了,只不过一直懒得去做。一开始觉得应该挺厉害的,后来仔细想想好像也就这样,那就拖着以后有时间做吧。
后来又将client docker化部署到了arukas.io上面。
golang也的确是很适合做并行程序的开发,另外写起来还有脚本语言的感觉。
arukas.io
arukas是日本樱花vps推出的docker容器托管服务,自2016年4月开始内测,内测期间用户可以免费创建多个docker实例,然而大天朝群众基本都用来搭建各种梯子,毕竟樱花的线路是很棒的,arukas也一副不怕被玩坏的样子,经常开放注册,不过最近几个月都不给注册了,官方最新消息2017年7月31日将停止内测,正式版本的发布日期现在还未定。
arukas的docker托管服务一般过一段时间都会重启,由于不能挂载卷,所以也不适合部署需要持久化数据的应用。
难得运行状态变成了runing,有一段时间服务很不稳定,经常部署不成功,或者部署成功没过多久就挂了,再或者虽然部署成功了,但是状态一直处于deploying。
29个docker实例。
arukas母鸡的cpu是E5-2650 v3 ,29个实例用ffmpeg默认参数压制两个小时的h.265编码的1080p视频基本只需要20分钟左右。用一般的vps压制估计得要十多个小时
先在server端将完整的视频切片,在client转码完成后再在server端将所有片段合并在一起。
14:33开始进行转码,14:48分完成了最后一个切片的转码。