数据库集群原理

简介:

转自http://wangshuxing123-126-com.iteye.com/blog/737484

对于应用服务器集群,应该是非常常见的。通过集群,可以很简单地通过乘法的方式将服务能力扩大(而且这种扩充的成本要远低于垂直扩充,你只要比较一下一个满配4CPU的PC服务器与2台满配2CPU的服务器的价格就知道了),并且,可以提供系统的高可用性,当一台服务器出现问题时,可以由其他服务器提供服务,避免了服务的中断。

而对于数据库服务器,集群就比较少见了,以往只用于高端系统,比如象ORACLE就提供了并行模块。

而ICX的出现,则为SQL SERVER数据库的集群提供了良好的解决方案。(参见:ICX-实现SQL SERVER数据库集群)。

  我们先看一下这种产品的原理:

数据库服务器的集群,之所以比应用服务器复杂,是因为数据库要有一个同步的问题,在两边不仅要读,更有一个写的数据如何一致的问题。如果依靠数据库本身的同步,则效率很低,很难以事务级的方式进行(即同步成功才向前端报告事务完成)

而ICX的原理,则是象一个路由器一样(所以称为数据库路由器),对服务请求进行分发,如果是查询,则象应用服务器那样,分发到某一台数据库服务器,而如果是更新的请求(包括新增、修改、删除等各类),则同时发送到两边的服务器,并且在两边的更新均完成后才报告事务完成。

下面分析一下ICX的性能问题:

首先是提交时的性能,查询是没关系了,因为路由器式的分发相对于查询操作本身时间是很短的,主要要关注的是更新操作。但相对于依靠数据库或文件系统的同步方式而言,ICX的更新是在两边同时进行的,而其他方式是采用A更新-同步-B更新的方式,要做三步工作,所以ICX的效率远高于其他同步方式,可以说其时间基本上就是两台服务器中较慢的一台的时间。(而且注意由于做了负载均衡,这台的速度要比只有一台服务器时还要快)

次是整体的并发处理能力,我们以两台服务器为例。如果只有查询,应该基本上可以处理2倍的并发量。但与应用服务器不同的是,更新的操作是在两边同步进行的。因此,并发能力的提升,实际与更新/查询的比例、复杂程度是相关的,如果更新多、查询少,处理能力的提升相对就小一些。但是,常识上数据库应用查询的比例远大于更新,而且查询的复杂度、占用服务器资源也远大于更新(比如更新经常是单表的,基于索引的,而查询中多表联接、多个条件之类的非常常见),所以,可以大致认为提供1.5-1.8倍左右的处理能力。当然,这个只是个很粗的估计。

另外一点是关于速度的提升。相对于并发而言,对速度的提升相对有限,因为在每台机器上都是对整个数据库进行操作。但是,如果一个数据库服务器的负载少了将近一半,其速度也是可能会有一个明显的提升的。

至于在数据库路由器进行路由分配时的时间与资源消耗,是很小的,可以忽略不计。除非你是做数量极大的特别简单的数据库操作


Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名justrun(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言


本文转自JustRun博客园博客,原文链接:http://www.cnblogs.com/JustRun1983/archive/2012/06/30/2571436.html,如需转载请自行联系原作者

相关文章
|
4天前
|
算法 关系型数据库 MySQL
【MySQL 解析】数据库的乐观锁和悲观锁实现原理
【1月更文挑战第11天】【MySQL 解析】数据库的乐观锁和悲观锁实现原理
|
4天前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
90 2
|
4天前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(上)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
78 0
|
4天前
|
存储 算法 搜索推荐
矢量数据库基础:概念、原理与应用场景
【4月更文挑战第30天】矢量数据库,处理高维向量数据的工具,应用于GIS、推荐系统、图像搜索及语义搜索。核心原理是将原始数据嵌入到高维空间,通过索引算法优化搜索性能。现代深度学习模型如Word2Vec提升向量表示准确性,KD-Tree、LSH等算法加速相似性搜索。随着技术发展,矢量数据库在数据科学领域的重要性日益增强。
|
4天前
|
存储 SQL 数据库
数据库库表结构设计:原理、实例与最佳实践
数据库库表结构设计:原理、实例与最佳实践
95 0
|
4天前
|
C#
【自考】之数据库系统原理
【自考】之数据库系统原理
15 0
|
4天前
|
druid 网络协议 Java
再有人问你数据库连接池的原理,这篇文章甩给他!
在 Spring Boot 项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。 在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。
|
4天前
|
缓存 Java 数据库连接
mybatis 数据库缓存的原理
MyBatis 是一个流行的 Java 持久层框架,它封装了 JDBC,使数据库交互变得更简单、直观。MyBatis 支持两级缓存:一级缓存(Local Cache)和二级缓存(Global Cache),通过这两级缓存可以有效地减少数据库的访问次数,提高应用性能。
285 1
|
4天前
|
存储 关系型数据库 数据库
数据库索引的原理,为什么要用 B+树,为什么不用二叉树?
数据库索引的原理,为什么要用 B+树,为什么不用二叉树?
|
4天前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
302 0