zoukankan      html  css  js  c++  java
  • 数据库读写分离和数据一致性的冲突

    读写分离: 为保证数据库数据的一致性,我们要求所有对于数据库的更新操作都是针对主数据库的,但是读操作是可以针对从数据库来进行。大多数站点的数据库读操作比写操作更加密集,而且查询条件相对复杂,数据库的大部分性能消耗在查询操作上了。

    主从复制数据是异步完成的,这就导致主从数据库中的数据有一定的延迟,在读写分离的设计中必须要考虑这一点。以博客为例,用户登录后发表了一篇文章,他需要马上看到自己的文章,但是对于其它用户来讲可以允许延迟一段时间(1分钟/5分钟/30分钟),不会造成什么问题。这时对于当前用户就需要读主数据库,对于其他访问量更大的外部用户就可以读从数据库。

    适当放弃一致性:在一些实时性要求不高的场合,我们适当放弃一致性要求。这样就可以充分利用多种手段来提高系统吞吐量,例如页面缓存、分布式数据缓存、数据库读写分离、查询数据搜索索引化。
    可以通过程序控制,将强一致性要求的功能(比如存钱、取钱)的读写操作均指向主数据库,或者将写操作采用“双写”的方式实现;而弱一致性(最终一致性)要求的功能(比如更新微博(写)、金融查询账户(读))实现读写分离。
     

    因此:

    我的想法是要使用读写分离来实现系统吞吐量的提升就要从业务上想办法降低一致性的要求。

    对必须要有一致性的功能是无法进行读写分离的,可以采用多库不区分读写以及memcache缓存技术来实现。




  • 相关阅读:
    nginx 09-Nginx部署https
    nginx 08-Nginx的rewrite规则
    nginx 07-Nginx缓存服务
    nginx 06-Nginx代理服务
    LBP及纹理表达 转自http://blog.sina.com.cn/s/blog_ba9d7d9901018k4v.html
    双边滤波与引导滤波
    层次聚类,转自http://blog.sina.com.cn/s/blog_62f3c4ef01014uhe.html
    有用的matlab函数(不断加入)
    显著目标检测思路
    matlab曲线、图形绘制方法(不断更新)
  • 原文地址:https://www.cnblogs.com/findbetterme/p/10820590.html
Copyright © 2011-2022 走看看