博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高性能数据库集群:读写分离
阅读量:6912 次
发布时间:2019-06-27

本文共 971 字,大约阅读时间需要 3 分钟。

 

 高性能数据库集群方案:读写分离。 其目的在于将访问压力分散到集群中的多个节点,减轻高并发现的访问压力,但是没有分散存储压力。

 读写分离的基本架构图如下:

    

一主对从或者一主一从,主节点负责读写操作,从节点负责读操作。

 

主从分离的实现:

  1、数据库搭建主从集群,一主多从或者一主一从

  2、主机负责读写操作,从机负责读操作

  3、主机通过复制将数据同步到从机,从而使每一个数据库都保证数据的一致性

  主从同步的具体原理:

      将主机的数据复制到多个从机(slaves)中,同步过程中,主机将数据库的操作写到二进制日志(binary log)中,从机打开一个io线程,打开和主机的连接,并将主机的更新日志写入从机的中继日志中,

    从机开一个sql线程读取中继日志中的数据,进行更新,从而保证数据的主从数据的一致。

 

我们在这里为了数据库的高性能引入了主从分离,但是往往在做架构时,会因为提高系统的高性能,高可用等,引入一些操作,会增加系统的复杂度。 主从的实现不是难点,难点在于引入主从后复杂度随之而来的解决方案。

 

读写分离,增加了主从复制延迟 和分配机制两个负责度。

 

1、主从复制延迟

  以 MySQL 为例,主从复制延迟可能达到 1 秒,如果有大量数据同步,延迟 1 分钟也是有可能的。主从复制延迟会带来一个问题:业务服务器将数据写入数据库主服务器立刻进行读取,但此时读操作的的访问时从机,主机还没有将数据复制到从机,所以此时查询会有问题。(比如用户刚进行注册,但是登录的时候却说无此用户)

  有以下几种解决方案:

    1、根据业务来区分,关键业务的读写全部指向主机,非关键业务采用读写分离

    2、加入redis,将redis中数据的过期时间设置为主从延迟的时间,当进行访问时,redis中有数据,则说明主从同步未完成,若redis中无数据则说明主从同步已完成。

2、分配机制

  读写分离,怎么实现读写分离呢?怎么知道读哪个数据库呢?一般有两种方式:程序代码封装和中间件封装。

  1、程序代码的封装,在代码中抽象出来数据访问层,,实现读写操作分离和数据库服务器连接的管理

  

 

 

 

  

     

 

转载于:https://www.cnblogs.com/volare/p/9783041.html

你可能感兴趣的文章
[转载] C#——使用RichTextBox做的一个Notepad
查看>>
c语言练习
查看>>
Android下横竖屏切换的处理
查看>>
进击的JAVA(1)
查看>>
PHP整理笔记五目录与文件
查看>>
在ASP.net中使用OWC绘制统计图表
查看>>
【BZOJ 2440】[中山市选2011]完全平方数
查看>>
SVN学习总结(1)——SVN简介及入门使用
查看>>
嵌入式linux开发uboot移植(三)——uboot启动过程源码分析
查看>>
zabbix-agentd 的配置
查看>>
网卡arp的报错修复
查看>>
我的友情链接
查看>>
怎样在Powerpoint中剪裁视频或音频ppt背景素材
查看>>
maptail
查看>>
js压缩图片
查看>>
Java8 十大新特性详解
查看>>
BZOJ3152[Ctsc2013]组合子逻辑——堆+贪心
查看>>
大型网站技术架构(四)网站的高性能架构
查看>>
添加非Oracle用户到dba, oinstall组
查看>>
我的友情链接
查看>>