项目中的2大超级难点

王志勇 发表于 2022年07月19日 09:28

前几天买了Java《四大名著》,买来就后悔了,因为书太厚了,每天学习3个小时,差不多需要3年才能从头到尾学完,而且信息量很大,里面的术语极多,在实战中,能用到的部分大多不到1%。当时买这套书的原因是,想学习Java的术语和思想,因为我相信所有的编程语言,98%都是相通的,也就是Java上的大部分术语,都可以套用到PHP上。Java的培训周期我不知道,但对于PHP培训,我喜欢直接上来就开门见山讲最核心的部分──数据库的设计。整个PHP培训,我相信在2~5个小时的时间,是能全部讲完的

项目中我遇到了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,需要再加密。(遗憾的是,似乎没有第三方接口使用这个便利的方案,搞得太复杂了。)

所以,在项目中只能暂时用人工收款、人工发货的办法。

2条评论:
1   kenwa 2022-11-08 17:13
勇哥开班不?等我退休了去听听课也不错。

自由勇 2022-11-09 07:14
一直有这个想法,因为事情太多,如果顺利的话,估计最快也得在2024年下半年、2025年之后了。

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

正文:

  记住信息?

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

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

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

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2022 auiou.com All rights reserved.
此Blog程序由王志勇编写