• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ilaipi
V2EX  ›  程序员

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

  •  
  •   ilaipi ·
    ilaipi · Aug 10, 2019 · 7216 views
    This topic created in 2646 days ago, the information mentioned may be changed or developed.

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

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

    还有其它问题吗?

    14 replies  •  2019-08-10 20:24:28 +08:00
    SuperMild
    SuperMild
    Aug 10, 2019
    1
    反正都要进数据库的,同步速度也没要求,同步多客户端没有难点啊。

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

    「因为一个人偷取别人能量是会根据个人数据产生不同的可偷取量」
    你说的个人数据是被偷的,还是来偷的,我觉得应该不需要根据来偷的人的数据。
    ilaipi
    ilaipi
    OP
    Aug 10, 2019
    5
    @opengps #3 拿一坨 5g 的能量来说,貌似最多能被两个人各偷 1g,要是有 3 个好友同时来偷就有并发问题了。
    Leigg
    Leigg
    Aug 10, 2019 via Android
    6
    @ilaipi 也许吧,这是业务问题了,技术实现没难点。
    zsdroid
    zsdroid
    Aug 10, 2019
    7
    "坨"字很有画面感
    jinliming2
    jinliming2
    Aug 10, 2019 via iPhone
    8
    感觉他们的并发做的并不是特别好,比如给好友浇水,一天应该只能浇三次,但是点快了的话,偶尔能出现四次,不知道是不是某种特殊设定,还是 bug,还是并发没做好
    Varobjs
    Varobjs
    Aug 10, 2019 via Android
    9
    作为后端想知道蚂蚁森林 UI 怎么实现的,就是树可以变大,上面还具有挂东西。
    有人知道吗
    Varobjs
    Varobjs
    Aug 10, 2019 via Android
    10
    偷能量这个,每次偷到多少,还有并发感觉和抢红包一样。不过同一个能力被抢的并发量肯定没有红包那么大
    opengps
    opengps
    Aug 10, 2019
    11
    @ilaipi 按照我的预估,这里的并发是很低的。不过对于这个体量的产品,先进先出队列控制是必然有的
    fcoolish
    fcoolish
    Aug 10, 2019
    12
    我们组做的项目就是类似蚂蚁森林,最开始并没有确定好的,是随机值,直到不能再偷 。
    偷能量用了乐观锁和 lua 脚本实现原子操作的,还有些部分是用分布式锁
    doing1
    doing1
    Aug 10, 2019
    13
    @jinliming2 哦呦,这个发现可以
    GermXu
    GermXu
    Aug 10, 2019
    14
    @Varobjs 这个应该是贴图的, 加上点击动画, 因为树大小不一长得并不一样, 也许是 canvas 或者 svg 代码的, 具体何种实现方式不知道
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1732 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 12:37 · PVG 20:37 · LAX 04:37 · JFK 07:37
    ♥ Do have faith in what you're doing.