王志勇 发表于 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吗?
近期的主题:
创业杂谈(6):捡钱/赚钱的一个重要原理
夹缝中生存
2023新年开篇:人生最重要的事情,念经持咒
2022年结语
创业杂谈(5):赚钱方法秘密的发现
创业杂谈(4):博客怎样写有(大的)流量?
中文博客最恰当的叫法
本博客需要重温置顶
指出最不规范的网名
编程杂谈(6):永恒的论坛和2023问题
创业杂谈(3):为什么网络赚钱会这样难?
谈永恒的论坛
最难熬的2022年冬天
创业杂谈(2):寻求成功
通勤50分钟买电驴吗?
编程杂谈(5):为什么说编程就是创业?
编程杂谈(4):擅长和成功
编程杂谈(3):为什么写程序必须辞职?
编程杂谈(2):最重要的因素和资金问题
编程杂谈(1):选择项目
版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。
与此相关的链接
自由勇专栏
Blog存档 Archives
2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +