数据库主从复制,读写分离,负载均衡,分表分库的概念

谢邀,这是个好问题,而且这个问题好在即使概念非常容易理解,但是这几个不同的概念细节太多太多,
而且理解了概念,自己要用,又需要做很多的调研评估和开发工作。作为在这个领域爬坑多年的人,我这
里就先介绍下概念,再提供几个开源工具和云服务吧。
先来说这些架构解决的问题吧,传统数据库如Mysql(以下工具也会以Mysql为主),存在的问题就是单
机部署,单进程,这样就存在一些问题:
资源利用不灵活,有可能cpu的性能还有富余,但是磁盘已经顶不住读压力或写压力了,有可能磁盘的性
能还有富余,但是cpu的性能已经顶不住了。还有可能cpu和磁盘都很富余,但是写入的数据量太大,直接
撑爆磁盘上限。
资源有最大上限,cpu最多用到比如64核的机型,磁盘最高几百T,再高的话不好意思,没有更屌的机器
了,但是用户的数据和查询是没有上限的。
连接池资源的上限,为何要把连接池单独提出来说,原因就是业务量一大,
容灾类的问题,虽然事务可以保证重启后数据不丢,但是业务线上跑,重启等不起。
而这个问题所提的几个概念,正是对如上传统数据库痛点的解决方法。
主从复制(replication),解决的是容灾类的问题,容灾需要保证数据库切换的实时性和数据的一致性,
一致性的强弱还催生了几种不同的复制模式(asynchronous, semisynchronous, group replication)
读写分离(read write spliting),是一种业务类应用解决读流量单机无法承受的方式,学名叫 scale out
,读写分离类的业务是架设在主从复制的基础上
负载均衡 ( load balance),也是一个非数据库的概念,但是在数据库层面,如果有一个通用的中间层,那
么也适用。
这三者的关系基本可以参考这几幅图:

这幅图的load balance做在了业务层,而读写的路由逻辑由业务层在控制。

原文地址:https://www.cnblogs.com/shan1393/p/9064102.html

时间: 2024-10-07 22:39:16

数据库主从复制,读写分离,负载均衡,分表分库的概念的相关文章

基于amoeba实现mysql数据库的读写分离/负载均衡

一.Amoeba的简述:[来自百度百科] Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡.读写分离.高可用性等需求.与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单). Amoeba相当于一个SQL请求的路由器,目的是为

mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)

mysql主从复制与lvs+keepalived实现负载高可用 目录 1.前言    4 2.原理    4 2.1.概要介绍    4 2.2.工作原理    4 2.3.实际作用    4 3方案    4 3.1.环境    4 3.2.架构图    5 3.3.设计原理    6 4.相关软件安装    6 4.配置mysql的主从    7 5.通过lvs+keepalived实现负载与热备,并实现读写分离    8 1.前言 最近研究了下高可用的东西,这里总结一下mysql主从复制读

MyCat 读写分离,负载均衡

docker mysql 主从复制 配合Spring 事务 注意事项 配置好JRE,安装好MYCAT 在mysql主库创建表,会同步到从库 CREATE TABLE `user` ( `id` int(11) NOT NULL, `user` varchar(255) NOT NULL COMMENT '名称', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; mycat schema.xml balance="3",所

(转)学会数据库读写分离、分表分库——用Mycat,这一篇就够了!

原文:https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况

学会数据库读写分离、分表分库——用Mycat

系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况,这样使用起来比较有信心. Mycat下载地址:http://dl.mycat.io/官网有个文档

转:开源数据库中间件MyCat实现数据库读写分离、分表分库指南

系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况,这样使用起来比较有信心. Mycat下载地址:http://dl.mycat.io/官网有个文档

数据库读写分离、分表分库——用Mycat

系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况,这样使用起来比较有信心. Mycat下载地址:http://dl.mycat.io/官网有个文档

数据库分表分库

产生原因 1.当数据达到了上亿级别单个库使用效率性能是十分低下的,当进行查询等操作时候,也是从根节点去找到子节点然后在找到叶节点 , 数亿条取一条数据 性能就不是很迅速,而且单机的存储量,链接数,并发量,处理能力十分有限. 这个时候数据库就容易遇到了系统瓶颈, 所以为了 降低性能,缩短查询时间,减少数据库的负担,会采取分表分库的方法 . 数据库分表分库思路:水平拆分和垂直拆分 垂直拆分:就是不同的表存储在不同的数据库,按照业务进行独立划分 ,主要通过'列'进行划分,将不常用的字段或者较大的字段拆

重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践

一.MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量. 关于数据库的扩展主要包括:业务拆分.主从复制.读写分离.数据库分库与分表等.这篇文章主要讲述数据库分库与分表 (1)业务拆分 在?大型网站应用之海量数据和高并发解决方案总结一二?一篇文章中也具体讲述了为什么要对业务进行拆分. 业务起步初始,为了加快应用上线和快速迭代,很多应用都采用集中式的架构.随着业务系统的扩大,系统变得越来越复杂,越来越难以维护,开发效率变得越