在使用云函数开发时,本来想着在一些业务场景下试着上并发锁(因为在云函数事务章节,看到无法避免write skew),所以使用了asynclock,想着看能不能锁下.
尝试好发现好像锁不住,云函数下开发,感觉每次请求过来,我们的main函数,都像是在一个新的js函数(腾讯封装的,自己猜测)里执行,导致每次的锁都是新锁,然后也打印了下累计变量,发现基本每次请求来后,累加的都是1,或者搁两个请求就重置了
想请教下,是不是确实像我所说的这样,云函数确实是每次执行,都是类似新环境,无法使用到像是全局变量的东西,让每次云函数被执行时,都能访问到这个全局变量?谢谢
下面是我打印的测试日志
代码大概
这个跟云函数的运行机制有关,可以了解一下
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/mechanism.html
如果要尝试加锁可以考虑接入redis或者使用inc指令,比如表里面的字段初始值是0,每次加锁的时候执行inc,得到结果=1的才表示取到锁,执行完要更新回0
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/Command.inc.html
云函数里的“层”,了解一下。
另,你们的业务需求是什么?一般象秒杀,抢购一类需求,可以用原子操作来实现。