开发者社区> 问答> 正文

读写分离后的数据一致性问题

高峰时段 RDS 只读实例的延迟有 10 - 30 秒,这直接导致一些不可接受的问题,比如:刚刚成功发布评论,一刷新页面,评论没了...
敢问阿里云的 MySQL 大牛们,这种问题一般有哪些解决方案?

展开
收起
周伯通 2015-03-02 20:43:40 18115 0
3 条回答
写回答
取消 提交回答
  • 回1楼ayouny的帖子
    偶像啊。。。
    2015-03-04 21:41:02
    赞同 展开评论 打赏
  • 一个程序员,欢迎骚扰!!!
    果真放大招了
    2015-03-04 14:25:43
    赞同 展开评论 打赏
  • Re读写分离后的数据一致性问题
    优化数据库。(废话了)


    1、将数据库体积定时的清理保持苗条的身材。


    2、表要尽量简单,关系不要太复杂,尽量不要太多索引。


    提升配置。


    提升配置治标不治本啊。


    优化程序。


    1、利用客户端缓存,减少对数据库的反复读取,当用户读取一次评论之后便将评论信息写入本地cookie,当用户在一段时间内不停刷新页面的时候,就不让他再读数据库了直接去cookie里面取数据。添加到数据库数据成功的同时也返回数据告诉客户端也添加到cookie里面去。这样用户就知道他自己成功评论了,而且不论他怎么刷都伤不到服务器。


    2、利用缓存服务器的缓存,减少对数据库的反复读取,和cookie差不多,只不过是存在了服务器的内存里面。这样比读数据库快,但是需要注意这种情况下,如果用户玩命的刷,服务器还是很伤。就算是读内存还是得读服务器的东西。


    3、没必要将所有的评论都放在数据库里,如果评论太多太久远的没有意义的就删了吧。或者干脆静态化了得了,减少数据库的体积。


    4、关于同一时间并发的评论,直接先不写数据库,先全写到内存里去合并数量,然后按照数据库能接受的节奏,写进数据库。其实这个也是治标不治本,真正的洪流来了,怎么优化都没用。直接封IP吧。


    最后的大招:
    告诉用户他的数据已经提交,但是服务器更新需要一定的时间,请不要着急等30秒后刷新看看。这招最简单,根本就不用什么程序。
    2015-03-02 22:58:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PolarDB-X 基于 X-Paxos 一致性协议的高可用 立即下载
分布式高并发缓存6.0 立即下载
阿里云HBase主备双活 立即下载