新项目的临时新计划(图床、相册、网站远程备份等程序)

王志勇 发表于 2018年12月19日 10:11

关于进度和执行力:
发这些计划,能有效敦促我提高执行力,确实见效十分明显。正如上个月发布的《Feedval RSS阅读器的参数预告》时,当时的程序还是0,此时已经完成了这个参数预告的大部分条目,经过这20天的连续工作+加班奋战,Feedval的开发已经进入后期,约完成了70%。

当Feedval完成之后,接下来必须完成Eachval项目,这是当时写的部分计划,一切都按照这个计划进行:Eachval Mlog独立微博的规则预告。Eachval尚未动工,目前程序还是0。预计Eachval的工作量是Feedval的3-10倍左右,累计约200-400小时完成。当然,程序开发时间预估的误差非常大,大部分时候会远超出预期,因为程序设计每天要做很多的逻辑编排、数据关联,非常消耗时间,而且有各种事情在干扰着进度,所以速度是十分有限的。

尤其是我每天面对这些逻辑编排、数据关联,无数次想要逃离程序开发现场,因为太心累,脑筋总是绷得紧紧的。我也常常会发觉,为什么真的从事这种程序开发的在职人员少之又少?因为太累了,这种苦不是一般人能受得了的,工作量庞大,进度缓慢。

进度,反义词其实是:拖延。加快进度,意思相反的词其实是:拖延时间。

关于架构和程序性能优势:
这些项目,将发布于eonval.com和Webshu平台,都采用PHP+NoSQL全动态架构,性能很接近于纯HTML页,正如我编写的程序:本博客和每天启航博客就是这样的全动态页,无论数据有多大,程序的速度永远是这样快。所以,对于服务器的CPU、内存资源,本质上不会额外占用,能够像HTML页一样,承受更多的访问量。因此,当一个VPS、虚拟主机、服务器,安装多个这样的程序,也不会使服务器的性能下降。

关于图床、相册程序:
促使我开发图床、相册程序的原因:原因1是Eachval的独立微博,必须启用2个二级域名,一个是微博空间,一个是图片空间,从一开始就让用户把程序、图片分开,非常有利于主站的速度优化,这是一步到位的做法。原因2是我发现很多博客,都一直在寻找第三方图床,那么可以用二级域名来放博客的图片,比如我就是一直用二级域名,每次上传图片,以前用FTP,现在用SFTP,因为没有开发web页面,所以我只能用FTP或SFTP。

图床、相册程序,在作用上这2者略有不同。图床,侧重于存储图片,图片主要用于外链,如博客、微博、个人主页等等。相册程序,需要有相关的相册导航页。

一个程序员,从0编写一个最简单的单机版图床程序,可能一下午、或者一两天就能完成。但如果开发成公众使用版,需要开发一些实用的好功能,以及需要考虑很多的数据关联,开发周期则要增加10-20倍以上

相册程序,和图床程序的开发难度差不多,但是相册程序需要的功能更多,开发周期会更长。

关于网站远程备份程序:
为什么一定要远程备份?而不是备份?因为前几天,国外一家大的VPS商,某ance,突然跑路了,之前的运营都是正规的,但是没有任何提前通知,突然关闭了服务器,导致用户的数据无法拿回。对于用户来说,这个损失要多惨重就有多惨重。如果能提前备份在另外的远程服务器,就不存在这个损失。(两个不同服务商的空间数据同时丢失的机率很小。)
提前备份,能给人带来难以想象的惊喜

于是,我想到了需要有这样的一个定期备份的功能,就是让网站定期自动打压缩包备份(比如每天、3天、或者7天一次,可以自由设定)。如果我们用FTP、SFTP定期这样去下载,无疑既消耗时间,平时下载的备份数据又没有意义。而且,如果是国外VPS,速度很慢,在凌晨3点~早上8点,能够保持在1.8MB/s,其它时间的下载速度只有20KB~131KB/s。

那么,这时候必须有第2台VPS,来远程下载刚才自动打包好的那些备份文件,而且下载速度非常快,同国的VPS间传输,速度在10MB/s~100MB/s以上

这2台VPS,需要各自编写程序、脚本。比如VPS 1为网页服务器,VPS 2为备份机。VPS 1执行定期将每个站点单独打包,VPS 2定期用wget依次下载VPS 1上的压缩包。

同时,在VPS 2下载完成后,VPS 1上的备份文件执行立即删除、或者24小时后删除。
VPS 2上的文件,可以在程序里设定保存30天、或者3个月以内的备份文件。超过30天、或3个月的文件,自动删除,否则空间可能不够用。

这样的备份程序,一个程序员,从0编写,可能单机版经过2~7天就能完成编写、调试。
如果做成公众版的程序,需要考虑数据关联,则可能需要3~10倍的开发周期。

我现有的服务器后端技术,主要是PHP+NoSQL+shell。实现这种网站远程备份程序,完全可以用PHP+shell实现,两者缺一不可。比如远程下载,必须用到shell的wget命令,打压缩包,必须用到shell的tar -zxvf命令。
循环定时打包备份、循环定时远程下载,必须用到shell的screen命令。

远程备份程序的发布平台:
Vaimt Panel是我在2016年计划的一个Linux VPS面板(暂停计划如这里复活计划如这里)。如果用户有需求,需要开发这样的远程备份程序,那么此程序一定会集成到Vaimt面板中。
当时计划开发Vaimt Panel,并非是由于现有的行业里很多用Python语言编写的VPS面板,而是由于需要一个web面板,比如可以实现web上传、压缩、解压缩、修改777权限这样的基础功能,有些类似于cPanel。

Python语言编写的面板,现在也有朋友因为占用资源,想让博客的性能达到极限,所以卸载了。占资源的原因,是因为Python编写的面板,需要安装Python后台。Python编写的面板,有个优点是不依赖PHP,因此看起来很酷,在没有PHP、Apache、Nginx的情况下,能够在Python的面板里安装和卸载PHP、Apache、Nginx。

其实,这个优点,是由于它是基于非PHP/Apache/Nginx平台,只要是基于非PHP/Apache/Nginx的平台的任何语言,都有这个优点。就像如果用PHP编写的面板,也可以在这个面板里安装和卸载Python的任何版本。

而在Python编写的面板里,不能安装、卸载Python。
PHP编写的面板里,不能安装、卸载PHP、Apache、Nginx。

这就像一个人,不能给自己做手术,不能给自己理发,很有趣吧?

其实,一个人能给自己做部分手术,能给自己做部分头发的修改。所以,我依然有做这个用PHP编写的VPS面板的想法,只有部分底层功能是无法实现的,比如安装和卸载PHP、Apache、Nginx,其余的功能大多可以实现。

这种面板,我用了一个新词,称为“软面板”。因为有些无法在面板实现的功能,会在面板页面,有相关的提示,让用户输入相关的shell命令,这些shell命令是我提前写好的脚本。由于在数据处理方面,PHP比shell命令强大太多,所以我写的这些shell命令,有时候会让PHP和shell互相调用,原则上是能让PHP处理,尽量交给PHP处理

面板里的这些功能,开发的思路就是PHP获取相关的Ubuntu/CentOS/Debian下的文件,处理完成之后,再被shell命令调用,传给Ubuntu/CentOS/Debian系统。

PHP+NoSQL架构的VPS面板的优势:
缺点是不能自己给自己做底层的手术。但是优点是能调用很多shell命令,PHP+NoSQL架构本质上不会额外占用主机资源,如上所述。即使同一主机安装20个、50个这样的面板,本质上也不会额外占用资源,只是像HTML页一样,多了一些网页。

1条评论:
1   自由勇 2018-12-25 07:10
写本篇博客耗时3小时以上。
2   自由勇 2018-12-25 08:12
Trackback来自《Eonval开源软件的人生心路历程(3)

年轻时,因为种种原因,总是需要保护自己的代码。现在随着年岁的增长,我巴不得把源代码(我的作品)免费送到用户的手中。年岁越大,这种想法越强烈,因为好东西不去分享,终会烂在自己的手里;到年老时,年轻时创造的这些,终究会离你而去。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

直接发送Trackback到此文章

说明:本评论系统不支持HTML代码。(您的留言需要审核,审核规则请见这里。)

王志勇:1980-09-26 (39周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2019年05月
2019年04月(30)
2019年03月(30)
2019年02月(30)
2019年01月(30)
2018年12月(30)
2018年11月(30)
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2019 auiou.com All rights reserved.
此Blog程序由王志勇编写 已经发布在Arsue