蚂蚁森林的特点是,一坨能量,被好友偷取,每个好友偷的时候,随机得到一小坨。直到最低值,不能再被偷。
1,每次被偷的能量是不是在能量形成的时候已经确定好了可以被偷几次,每一次的值是多少?
2,并发问题怎么解决呢,多个客户端,同时偷,每个客户端偷完都要同步到其它的客户端
还有其它问题吗?
1
SuperMild 2019-08-10 08:19:20 +08:00
反正都要进数据库的,同步速度也没要求,同步多客户端没有难点啊。
重点是响应速度要求低。 |
2
Leigg 2019-08-10 08:36:54 +08:00 via Android
不用想,支付宝的任何一个功能所相关的服务以及数据库都是分布式部署的,所以保持数据一致性使用一套方案就行了。能量的话,总值应该是一个字段,偷取时我想大概是通过一个算法即时生成被偷这个人偷取的量,然后写入偷取记录,为什么是即时生成?因为一个人偷取别人能量是会根据个人数据产生不同的可偷取量,比如这个人第一次偷能量可能偷的多一点,纯粹的随机不太可能。
|
3
opengps 2019-08-10 08:46:51 +08:00
单行数据并发不高的,假设支付宝好友最多也是几千个,那么几千个人过来偷你的能量的概率很低的
|
4
ilaipi OP @Leigg #2 我觉得一开始就生成好能被偷几次,每次被偷的量也是可以的。
「因为一个人偷取别人能量是会根据个人数据产生不同的可偷取量」 你说的个人数据是被偷的,还是来偷的,我觉得应该不需要根据来偷的人的数据。 |
5
ilaipi OP @opengps #3 拿一坨 5g 的能量来说,貌似最多能被两个人各偷 1g,要是有 3 个好友同时来偷就有并发问题了。
|
7
zsdroid 2019-08-10 09:37:59 +08:00
"坨"字很有画面感
|
8
jinliming2 2019-08-10 10:35:37 +08:00 via iPhone
感觉他们的并发做的并不是特别好,比如给好友浇水,一天应该只能浇三次,但是点快了的话,偶尔能出现四次,不知道是不是某种特殊设定,还是 bug,还是并发没做好
|
9
Varobjs 2019-08-10 10:56:37 +08:00 via Android
作为后端想知道蚂蚁森林 UI 怎么实现的,就是树可以变大,上面还具有挂东西。
有人知道吗 |
10
Varobjs 2019-08-10 11:00:24 +08:00 via Android
偷能量这个,每次偷到多少,还有并发感觉和抢红包一样。不过同一个能力被抢的并发量肯定没有红包那么大
|
12
fcoolish 2019-08-10 12:07:51 +08:00
我们组做的项目就是类似蚂蚁森林,最开始并没有确定好的,是随机值,直到不能再偷 。
偷能量用了乐观锁和 lua 脚本实现原子操作的,还有些部分是用分布式锁 |
13
doing1 2019-08-10 14:29:42 +08:00
@jinliming2 哦呦,这个发现可以
|