mqsql+ibatis+cobar集群

数据库的扩展有两种:

第一是横向扩展:Scale out,增加服务器(增加处理节点提供整体处理能力)

第二是水平扩展:Scale up,升级现有服务器配置(提高节点处理能力,如增加内存、cpu等)

集群主要是指数据库的横向扩展

其中在集群中最主要的技术是数据的复制:replication

mysql的复制:

主要解决几个问题:数据的分布,负载均衡,备份,高可用性和容错

主要的过程分为三步:

首先是在master在提交事务之前会写日志,将操作数据库的操作记录日志

第二是slave会起一个io线程获取master里的日志(此时master也会起io线程)写入slave的中继日志

第三是slave起sql线程将日志读取事件并执行,完成复制

其中,slave也是可以作为其他数据库的master,此时需要在read之前将写slave自己的二进制日志

(如果你设置log_slave_updates,slave可以是其它slave的master,从而扩散master的更新)

数据库

垂直切分:根据业务分不同模块,相近的功能模块的放在相同的数据库里

水平切分:基于一张表里有大数据量时,可以将数据分到不同的数据表里,这样在写和读以及索引功能有效提高

主从分离:主写从读,MySQL Proxy机制实现读写分离

集群,群节点的可用性探测机制 ,或者是可用性的数据推送机制

水平切分之后,通过分表的路由规则,例如hash算法分表,可以找到逻辑上的数据库,到

物理上数据库之前还需要使用负载均衡作用,例如,写操作对均衡到master数据库,

读操作会均衡到slave数据库中,均衡有两种:随机负载均衡和加权负载均衡

数据库连接池负责分配、管理和释放数据库连接

连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,

而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。

而连接的建立、断开都由连接池自身来管理。

cobar client 轻量级分布式数据访问层,基于ibatis和spring框架实现

支持垂直和水平数据切分数据库集群的访问

关于cobarclient的使用主要是在ibatis.xml中配置,

首先配置基本的使用cobar的说明:

使得应用程序依赖于cobaeclient的cobarSqlMapClientTemplate以及使用multipleDataSourcesTransactionManager

其次是关于数据分区多数据源的依赖管理说明:

主要是dataSources

在这里主要是配置数据源信息,其中包括唯一标关于识,涉及到启用路由协议是读写分离的数据库标识,再一个是关于主要目标数据源和备用数据源与目标数据源一致

第三个配置是数据路由相关配置,主要是指定路由协议的路径和文件名

具体说明:

http://www.open-open.com/doc/view/64671baa9d6a4f30849e1b1c6c0b3ba8

相关推荐