从19年开始使用华为云(4核8G)到20年使用阿里云(1核2G),从基于spring cloud 按照自己对微服务的理解做了一套完整的CMS系统(虽然细节处理不怎么丝滑,不过也算微服务入门吧)到依赖成熟(开源)的解决方案快速搭建个人网站。自我评价也算是云服务的入门级用户了吧。目前在我的小小云上部署了太多的服务,出现系统资源不太够用的情况,特别是内存资源(使用率长时间在90%上下浮动)。
因此是时候整理下当前小云上运行的服务了,也当做是一个阶段性总结吧,顺便看看还能不能挤牙膏。
总揽
目前小小云对外提供以下服务:
- 个人博客(Hexo)
- 个人图床(Chevereto)
- 个人网盘(NextCloud)
- 云端下载(Aria2)
- 直播转码(ffmpeg + SRS)
- 云端爬虫(Selenium + Chrome)
- 实验Beta环境(Spring cloud)
如上图所示为,每一个对外的服务均有多个子服务,子服务以docker的方式运行在云上。选择docker是因为:
- 服务之间可隔离
- 遇故障服务可快速重建
- 对主机环境依赖低
- 避免在网络上暴露主机
得益于服务docker化,我可以通过docker-compose对服务进行编排,配置必要的参数。目前整体运转良好,除了开篇所说的内存占用较高以外。
但是说回来,运行这么多服务内存占用高一点似乎也说得过去,下面将服务展开来看。
服务
个人博客
基于轻量、支持Markdown语法、同时发布多站点的考虑,个人博客系统选择了Hexo。毕竟个人博客主要是用来承载个人的随笔,并不需要太多花哨的东西。在《Docker + Git 部署Hexo发布》中,详细介绍了如何利用脚本实现Hexo的多站点部署。Hexo常常被部署在github以及gitee所提供的静态页面上,如:我的github或者是我的gitee。但是这两家仓库提供商对图片的限制很大,如果博文中有较多图片可能会导致Hexo发布失败或是图片无法加载,因此最好能有一个稳定的图床作为博文图片的来源。正因为如此我在小云上紧接着就部署了Chevereto和NextCloud。
图床
Chevereto作为图床相当的好用,界面美观,功能丰富(完全满足博文的要求),并且提供官方的docker镜像。至于它的安装方式,网上的资料有很多,这里就不展开了,可依据应用的环境自行配置参数。
需要注意的是部分参数需要通过修改配置文件才可生效,如默认上传图片大小是有限制的(2MB),修改完成后用卷映射的方式重新指定给docker即可。
图床顾名思义,主要是提供图片的支持。但是在丰富的博文中难免会遇上需要插入视频的时候,而此时又不想使用第三方服务(如哔哩哔哩)的话,就需要用到网盘了。
网盘
网盘我选择的是NextCloud,界面同样美观,具有很强的功能,完全可代替图床(因为我有一部分图片已上传至图床,实在不想迁移到网盘,所以两个都保留了)。网盘的视频功能支撑了《自动遍历UI控件》中的视频播放。
有了图床与网盘的加持,个人博客所需要的元素基本都到位了,剩下的就需坚持写下去🧐。
云端下载
在《云上利用Aria搭建离线下载工具》一文中描述了如何搭建云上下载工具。这里就不再细说了,不过近期发现有另一个服务好像“无意”中把未下载完的视频给转码直播了。🤣
直播转码
在《让小云支持视频在线播放》中描述了如何搭建在流媒体线播放平台。而出现上面提到的“误播”事件,则是因为写转播脚本的时候忘了加限制条件,脚本如下:
#! /bin/bash
function read_dir(){
for file in `ls $1`
do
if [ -d $1"/"$file ]
then
read_dir $1"/"$file
else
echo $1"/"$file
ffmpeg -re -i $1"/"$file -c:v libx264 -ar 22050 -crf 28 -vf scale=320:240 -f flv -y rtmp://movie/live/loop
fi
done
}
root_dir=$1
echo $root_dir
while :
do
IFS=$'\n'
read_dir $root_dir
IFS=$'\t\n'
done
脚本挺简单,循环遍历目录将文件用ffmpeg重新编码后推流。问题就出在遍历文件时未做判断,导致正在下载的视频也被推流了。
云端爬虫
在《搭建在线Selenium执行环境》系列【一】、【二】中描述了使用selenium与websocket搭建在线selenium执行平台。并且基于此配合cron实现自定义数据自动爬取如:房价信息、基金信息
Beta
这里主要是近期在折腾的Spring cloud(如Keycloak),从目前运行情况来看,受可用资源较少的影响,相关的服务运行存在异常,还需要进一步“折腾”。
结束
截止本文,小小云上运行的服务差不多就这些,可能确实到了小云性能的瓶颈吧,刚好快到双11了,各大云服务提供商也在打折促销,是不是得考虑再买一个小小云了呢。