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

这样的后端架构适合做读写分离吗?

  •  
  •   olist · 2021-06-21 17:17:37 +08:00 · 2002 次点击
    这是一个创建于 1011 天前的主题,其中的信息可能已经有所发展或是发生改变。
    数据层只有一个 mysql 。玩家登录时,后端会加载和玩家相关的绝大部分数据并缓存在服务端。小部分数据根据客户端请求实时查询数据库后返回。数据变化时,先修改服务端的数据,然后更新到数据库。
    上面提到的”绝大部分数据“是不是不适合做读写分离?因为主从复制的延迟会导致登陆时读到脏数据,并在此基础上修改并同步到主库。实时同步又会影响性能。分表分库或加 redis 缓存应该更适合,但这些改动大,自己没有什么信心。
    大家有什么建议吗?
    6 条回复    2021-06-21 21:34:04 +08:00
    CEBBCAT
        1
    CEBBCAT  
       2021-06-21 17:33:53 +08:00
    可以讲讲为什么数据更新时先修改服务端数据再更新到数据库吗?一般的做法不都是先确保数据持久化了,然后再解决数据一致性吗?

    听起来就好像是从河流的下游取一瓢水,去推断上游一样,而且还把这瓢水放回上游去了
    CEBBCAT
        2
    CEBBCAT  
       2021-06-21 17:35:45 +08:00
    信息的流动是有方向的,之前还能说数据是单向流动的(如果你是单机的话),那现在的这个方案就是黄河大合唱,信息的流动方向是混乱的
    index90
        3
    index90  
       2021-06-21 17:38:54 +08:00
    write through 缓存?(先修改服务端数据,然后更新数据库)
    你应该做到了玩家同一时间只会出现在一个服务节点上吧?这样还需要担心脏数据吗?
    olist
        4
    olist  
    OP
       2021-06-21 17:48:19 +08:00
    @CEBBCAT 因为现在玩家的数据只会由一台服务器修改,所以可以这样处理。至于为什么这么设计,我也说不清,因为是其他人设计的。
    olist
        5
    olist  
    OP
       2021-06-21 17:52:24 +08:00
    @index90 现在是没有脏数据的问题,但打算做读写分离,这个可能导致读到的数据不是最新的。
    leafre
        6
    leafre  
       2021-06-21 21:34:04 +08:00
    缓存就是读写分离
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5388 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 08:36 · PVG 16:36 · LAX 01:36 · JFK 04:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.