从技术角度讨论一下蚂蚁森林 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
ilaipi
V2EX    程序员

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

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

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

    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     Solana     1053 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 23:08 PVG 07:08 LAX 16:08 JFK 19:08
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86