王志勇 发表于 2022年07月19日 09:28
项目中我遇到了2大超级难点。一是2018年新开发的Eonval帐号程序,为了迎接未来的庞大的注册帐号数量,在设计之初就要做成高效运行的模式,以后基本上不用改了,当时是用数据切片的方式,可容纳10005~无限个注册数。当初一直在10004和10005之间犹豫,最终还是选定了后者,容量大,缺点是增加了数据切片分布,每增加一层切片文件的目录,切片数据库的数量就会增加到1000倍。更理想的,还是前者,改起来还是需要很多时间。另外,这些数据切片的划分方法,是先把用户名如中文、或者英文字母,把它们先转换成纯数字,要找到一个更合理、让数据更加平均公布的公式,是很困难的。
网站项目,很多都需要在前期先开发帐号程序。帐号程序,每个平台都有,比如各个平台的用户名、或邮箱登录,电子邮箱,微信,早已经司空见惯。
但要设计一个能预留支持1000万用户、10亿用户的帐号程序,就不是件容易的事情。因为如果都放在同一个数据库文件,数据库文件会很大,登录时既慢,又严重占用服务器的CPU、内存资源。
切片式的数据库,能在0.00000000000000001秒以内,加载完登录时所需的所有数据库,登录极快、极其节省服务器的CPU、内存。因为PHP的运行速度极快、惊人,比如PHP 7.4,从1~1000万循环一遍,只需0.0539微秒,也就是大约1855万分之一秒。
它唯一的缺点是会产生大量的切片数据库文件,对于备份是很不利的。比如当达到100万注册用户时,会有1200万个切片数据库。所以,备份是个巨大的梗,只能隔一两个月备份一次。
当切片数据库达到一定的庞大数量,可能就必须用一台或以上的独立服务器。因为一个小的VPS,由于长时间打包压缩备份,可能会被服务商警告。
超级难点2:第三方接口
我一直需要实现微信支付自动发货、或者支付宝支付自动发货,同行有开发者实现了这个功能。这依赖于微信、支付宝的第三方接口。
这个第三方接口,其实就是API。但是,微信、支付宝提供的官方教程,实在是太过于复杂、绕得太远,我至今都没有成功。
其实第三方接口,最简单的方案是,付款成功后,返回商家页面,URL上给出一个参数,如“&aa=yes”或“&aa=1”,只要得到这个yes或者1,就代表付款成功,然后网站根据这个参数来自动发货。原理是这个原理,实际的项目中aa=yes,或aa=1,需要再加密。(遗憾的是,似乎没有第三方接口使用这个便利的方案,搞得太复杂了。)
所以,在项目中只能暂时用人工收款、人工发货的办法。
置顶的文章:
论朋友圈可以发什么?
短信验证开发的方案分享
巡回更新: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年 +