V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ilaipi
V2EX  ›  程序员

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

  •  
  •   ilaipi ·
    ilaipi · 2019-08-10 08:09:22 +08:00 · 5785 次点击
    这是一个创建于 1911 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    还有其它问题吗?

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

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

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