王志勇 发表于 2018年12月19日 10:11
当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页一样,多了一些网页。
年轻时,因为种种原因,总是需要保护自己的代码。现在随着年岁的增长,我巴不得把源代码(我的作品)免费送到用户的手中。年岁越大,这种想法越强烈,因为好东西不去分享,终会烂在自己的手里;到年老时,年轻时创造的这些,终究会离你而去。
置顶的文章:
论朋友圈可以发什么?
短信验证开发的方案分享
巡回更新:2018-09-21
速度是永恒的主题
UTF-8、HTTPS原来都是浮云
https安全吗?
独立博客有必要安装https吗?
近期的主题:
夜晚靓歌(10):你没看过的《星雨心愿》
Feedval、Blogval将下线/谈理财和生存
2024.9感言
人生讨论(20):有人借钱怎么办?(2)
人生讨论(19):迄今为止最强的情感频道
数码评测(67):让小米/红米手机的反应提高1~2倍
数码评测(66):无线网卡FW150UH VS FW150UH
数码评测(65):如何快速自制CPU天梯图?
数码评测(64):2024年,你还在用VGA线吗?
人生讨论(18):6年就可以实现财务自由
人生讨论(17):为什么总是受欺负?
人生讨论(16):要钱的最新妙招
创业杂谈(17):什么项目能赢利?
人生讨论(15):有人借钱怎么办?
数码评测(63):高清切换超级神器
数码评测(62):再谈视频的尺寸
数码评测(61):近期数码采购和折腾
人生讨论(14):看穿尊重
数码评测(60):图拉丁-最佳中配工作“免费”手机
创业杂谈(16):博客何时终结?
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +