• 数据库高性能解决方案


    高性能数据库集群的第一种方式是: 读写分离,其本质是将访问压力分散到集群中的多个节点,但是没有分散 存储压力;第二种方式是:分库分表,既可以分散访问压力,又可以分散存储压力。

    一 读写分离

      读写分离的基本原来是将数据库读写操作分散到不同的节点上,读写分离的基本实现如下:

    1.  数据库服务器搭建主从集群,一主一从,一主多从都可以
    2. 数据库主机负责读写操作,从机只能负责读操作
    3. 数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据
    4. 业务服务器将写操作发给数据库主机,将读操作发给数据库从机

        注意:这里用的是主从集群,而不是主备集群,备机一般认为仅仅提供备份功能,不提供访问功能;而从机可以理解为仆从,仆从是需要帮助主人干活的,从机是需要提供读数据的功能,所以使用主备还是主从,是要看场景的,这两个词不是完全等同的

      读写分离的实现逻辑并不是很复杂,但是在实际应用过程中需要应对复制延迟带来的复杂性

           主从复制延迟会带来一个问题:如果业务服务器将数据写入到数据库主服务器后立刻进行读取,此时读操作访问的是从机,主机还没有将数据复制到从机,到从机读取数据是读取不到最新数据的,业务上可能会存在问题。

           解决主从复制延迟有几种常见的方法

    1. 写操作后读操作指定发给数据库主服务器
    2. 读从机失败后再读一次主机,这就是通常所说的二次读取,二次读取和业务无绑定,只需要对底层数据库访问的API进行封装即可,实现代价较小,不足之处在于如果存在很多的二次读取,将大大增加主机的读操作压力。
    3. 关键业务读写操作全部指向主机,非关键业务采用读写分离

  • 相关阅读:
    教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
    那些年,我们在Django web开发中踩过的坑(一)——神奇的‘/’与ajax+iframe上传
    刷题记录:[De1CTF 2019]Giftbox && Comment
    刷题记录:[强网杯 2019]Upload
    刷题记录:[XNUCA2019Qualifier]EasyPHP
    [RoarCTF 2019]simple_uplod
    [RoarCTF 2019]Online Proxy
    [RoarCTF]Easy Java
    [RoarCTF]Easy Calc
    刷题记录:[DDCTF 2019]homebrew event loop
  • 原文地址:https://www.cnblogs.com/anqli-java/p/9941920.html
Copyright © 2020-2023  润新知