从技术角度讨论一下蚂蚁森林

2019-08-10 08:09:22 +08:00
 ilaipi

蚂蚁森林的特点是,一坨能量,被好友偷取,每个好友偷的时候,随机得到一小坨。直到最低值,不能再被偷。

1,每次被偷的能量是不是在能量形成的时候已经确定好了可以被偷几次,每一次的值是多少?
2,并发问题怎么解决呢,多个客户端,同时偷,每个客户端偷完都要同步到其它的客户端

还有其它问题吗?

5640 次点击
所在节点    程序员
14 条回复
SuperMild
2019-08-10 08:19:20 +08:00
反正都要进数据库的,同步速度也没要求,同步多客户端没有难点啊。

重点是响应速度要求低。
Leigg
2019-08-10 08:36:54 +08:00
不用想,支付宝的任何一个功能所相关的服务以及数据库都是分布式部署的,所以保持数据一致性使用一套方案就行了。能量的话,总值应该是一个字段,偷取时我想大概是通过一个算法即时生成被偷这个人偷取的量,然后写入偷取记录,为什么是即时生成?因为一个人偷取别人能量是会根据个人数据产生不同的可偷取量,比如这个人第一次偷能量可能偷的多一点,纯粹的随机不太可能。
opengps
2019-08-10 08:46:51 +08:00
单行数据并发不高的,假设支付宝好友最多也是几千个,那么几千个人过来偷你的能量的概率很低的
ilaipi
2019-08-10 08:54:24 +08:00
@Leigg #2 我觉得一开始就生成好能被偷几次,每次被偷的量也是可以的。

「因为一个人偷取别人能量是会根据个人数据产生不同的可偷取量」
你说的个人数据是被偷的,还是来偷的,我觉得应该不需要根据来偷的人的数据。
ilaipi
2019-08-10 08:55:29 +08:00
@opengps #3 拿一坨 5g 的能量来说,貌似最多能被两个人各偷 1g,要是有 3 个好友同时来偷就有并发问题了。
Leigg
2019-08-10 09:31:46 +08:00
@ilaipi 也许吧,这是业务问题了,技术实现没难点。
zsdroid
2019-08-10 09:37:59 +08:00
"坨"字很有画面感
jinliming2
2019-08-10 10:35:37 +08:00
感觉他们的并发做的并不是特别好,比如给好友浇水,一天应该只能浇三次,但是点快了的话,偶尔能出现四次,不知道是不是某种特殊设定,还是 bug,还是并发没做好
Varobjs
2019-08-10 10:56:37 +08:00
作为后端想知道蚂蚁森林 UI 怎么实现的,就是树可以变大,上面还具有挂东西。
有人知道吗
Varobjs
2019-08-10 11:00:24 +08:00
偷能量这个,每次偷到多少,还有并发感觉和抢红包一样。不过同一个能力被抢的并发量肯定没有红包那么大
opengps
2019-08-10 11:03:28 +08:00
@ilaipi 按照我的预估,这里的并发是很低的。不过对于这个体量的产品,先进先出队列控制是必然有的
fcoolish
2019-08-10 12:07:51 +08:00
我们组做的项目就是类似蚂蚁森林,最开始并没有确定好的,是随机值,直到不能再偷 。
偷能量用了乐观锁和 lua 脚本实现原子操作的,还有些部分是用分布式锁
doing1
2019-08-10 14:29:42 +08:00
@jinliming2 哦呦,这个发现可以
GermXu
2019-08-10 20:24:28 +08:00
@Varobjs 这个应该是贴图的, 加上点击动画, 因为树大小不一长得并不一样, 也许是 canvas 或者 svg 代码的, 具体何种实现方式不知道

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590637

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX