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

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

听起来就好像是从河流的下游取一瓢水,去推断上游一样,而且还把这瓢水放回上游去了
CEBBCAT
2021-06-21 17:35:45 +08:00
信息的流动是有方向的,之前还能说数据是单向流动的(如果你是单机的话),那现在的这个方案就是黄河大合唱,信息的流动方向是混乱的
index90
2021-06-21 17:38:54 +08:00
write through 缓存?(先修改服务端数据,然后更新数据库)
你应该做到了玩家同一时间只会出现在一个服务节点上吧?这样还需要担心脏数据吗?
olist
2021-06-21 17:48:19 +08:00
@CEBBCAT 因为现在玩家的数据只会由一台服务器修改,所以可以这样处理。至于为什么这么设计,我也说不清,因为是其他人设计的。
olist
2021-06-21 17:52:24 +08:00
@index90 现在是没有脏数据的问题,但打算做读写分离,这个可能导致读到的数据不是最新的。
leafre
2021-06-21 21:34:04 +08:00
缓存就是读写分离

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

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

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

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

© 2021 V2EX