从应用层面来实现数据库负载均衡
问题的由来:
以前维护的系统经常宕机,究其原因是开发管理不善,造成程序质量不佳。撇开制度管理的原因不谈(那是技术人员无法解决的),其表象原因有二:一、授权程序设计不佳,造成整个系统运行缓慢;二、有很多程序中有几个大表的join语句,只要这种程序多跑几个,管你是什么IBM小型机通通垮掉。
问题的解决方案:
我曾想把所有系统翻一遍,但由于成本原因不可行。后来上了BIGIP,算是解决了中间件的负载问题,但中间件的负载一解决,所有的压力都集中到数据库,经常是数据库的问题造成整个系统垮掉。其表象原因为有很多程序中有几个大表的join语句,只要这种程序多跑几个,管你是什么IBM小型机通通垮掉。直到我离开维护岗,这个问题也没解决。现如今闲下来,我总在想,能用什么便宜的方法来实现数据库负载均衡,使得一些病入膏肓的系统能死得慢一点。
1、多写少读。
其实,数据库之所以压力大,主要是读取的原因造成的。因为写入总是很快的,主要是频繁的多表联合查询造成数据库资源消耗。那么除了在数据表中增加冗余字段来避免联合查询外,有没有比较好的办法来解决呢?
假如能有2个或多个数据库,都有一样的表,互为镜像,那么应用程序在写入数据时可以写入多个数据库,读的时候可以按系统别或压力值来分别读取不同的数据库,那么相当于把查询的压力分散开,便于问题的定位和负载均衡,可这带来一个问题,那就是如何保证这多个数据库的表的记录都是一样的?
假如我们在应用和数据库之间再加入一层,把所有的写入请求都向这一层转发,这一层我们姑且称之为负载控制层,当负载控制层向多个数据库写入时,发现其中一个数据库有问题,所有操作立即回滚,以保证所有数据库的数据一致。
并且在这一层有日志功能,如发生断电或其它灾难性故障,可根据日志来前滚或后滚,保证所有数据库数据一致。
读取数据库的时候就不通过这一层来转发了,直接在应用底层根据对照表或数据库压力表来决定读哪一个数据库,这样可以保证系统架构不会太复杂。
这只是我临时想到的一些东西,有不妥之处,欢迎大家指正。
分享到:
相关推荐
梭子鱼负载均衡解决方案是一种高效、灵活的网络技术,它能有效地分配网络流量,提高系统的可用性和性能。...通过实际部署和精细调整,企业可以充分利用梭子鱼的特性,实现最优的数据库负载均衡效果。
4. **数据库负载均衡**:在数据库层面,负载均衡可以防止单一数据库过载。常见的方法有读写分离、分布式数据库、数据库复制等。通过这些策略,可以将读操作分散到多个从库,写操作则集中在主库,提高数据库系统的...
此外,基于AI和机器学习的智能负载均衡算法正在被探索和应用,它们能更精准地预测和应对负载变化,进一步提升了系统的响应能力和用户满意度。 总之,负载均衡技术作为现代网络基础设施中的关键组成部分,对于保障大...
综上所述,解决Spring Quartz在负载均衡环境下的重复执行问题,需要综合运用Quartz的集群特性、数据库Job Store、公平调度以及应用层面的设计策略。通过这些方法,可以确保在多服务器环境中,定时任务的执行有序且...
- **冗余机制**:除了应用层面上的冗余,服务器负载均衡设备之间也实现了互为备份的功能。一旦主设备出现故障,备份设备会立即接管所有任务,保证服务不中断。 - **可扩展性**:系统具备良好的横向扩展能力,可以...
在实际应用中,可以采用硬件负载均衡器(如F5)或软件负载均衡器(如Nginx、HAProxy)来实现负载均衡。此外,云服务商如AWS的ELB、阿里云的SLB也提供了便捷的负载均衡服务。 总结来说,面对高并发,我们需要通过...
软件层面的负载均衡实现通常涉及中间层的设计。中间层作为应用程序和数据库之间的桥梁,负责管理和分配数据库连接。这种方法的优势在于,它能够控制数据库访问,根据当前负载动态调整连接,同时提供额外的安全层,将...
总结来说,Oracle 10g RAC的负载均衡配置涉及到客户端和服务端两个层面,通过TNS配置和Oracle内部机制,实现了会话的智能分配,从而达到资源有效利用和提高系统整体性能的目标。在实际应用中,可以根据系统的具体...
Nginx和HAProxy是两款流行的应用层负载均衡软件,它们支持复杂的路由规则,能够实现更精细化的流量管理和优化。 ### 8. 动态内容缓存 对于动态内容,简单的缓存策略可能不足以应对复杂的应用场景。利用反向代理...
本文基于CentOS 7操作系统,借助开源软件Nginx、Keepalived、Tomcat和MySQL实现高可用负载均衡的Web应用架构。Nginx作为前端服务器,为Web应用服务器提供代理和负载均衡;Keepalived作为Nginx服务器集群的心跳检测...
在系统应用层面,优化数据库性能至关重要。例如,可以调整数据库的最大进程数,以减少资源争抢。同时,对于数据库日志的批量写入,应避免频繁的事务提交,这可以通过改变应用逻辑实现,比如将多次小的插入合并成一次...
在应用层面,我们学习SQL(结构化查询语言),它是与关系型数据库交互的标准语言。SQL用于查询、插入、更新和删除数据,以及创建和修改数据库结构。掌握SQL是数据库开发和管理员的基础技能。 数据库的优化是另一个...
对于读请求,Amoeba 支持随机、轮询等多种负载均衡方式;而对于写请求,Amoeba 会同步数据到所有分片节点,保证数据的一致性。 **Amoeba 的优点** 1. **扩展性**:Amoeba 可以轻松地添加或移除分片节点,以适应...
"高可用数据库与负载均衡案例实操手册" 本手册旨在介绍高可用数据库集群与负载均衡的实践经验,通过实战案例,帮助读者熟悉 Gelera Cluster 数据库集群的工作原理与方式,能够搭建 MariaDB Gelera Cluster 数据库...
负载均衡可以通过硬件设备(如专门的负载均衡器)或软件实现(例如,网络级负载均衡服务、应用级负载均衡器)。在软件定义的网络环境中,负载均衡通常由专门的软件组件执行,这些组件可以部署在网络边缘或云环境中。...
在实际应用中,一个典型的互联网应用架构通常包括前端负载均衡器、应用服务器集群、数据库服务器集群以及可能的分布式缓存服务器集群。例如,用户访问如www.taobao.com这样的网站时,请求首先会被前端的负载均衡...
传统的两层结构数据库应用系统,即客户/服务器(C/S)模式和浏览器/服务器(B/S)模式,虽然在一定程度上实现了数据和程序的分离,但在实际应用中存在一些局限性,比如当客户端数量增加时,服务器性能会受到影响,且...
1. **二次负载均衡**:LTM设备首先对Portal服务器群进行负载均衡,然后根据应用程序的调用逻辑,Portal进程触发客户端发起新的SSL会话,再次访问Portal服务器群的443端口,实现数据连接的优化。 2. **最优质的负载...
负载均衡技术是现代互联网服务架构中的关键组成部分,它旨在通过分散网络流量,确保单个服务器不会过载,...在网络层,NAT和IP隧道等技术则在IP层面实现了负载均衡和流量管理,进一步增强了系统的灵活性和可扩展性。
- 支持异构服务器配置,即服务器可以在硬件、操作系统或应用软件层面存在差异,不影响负载均衡的效果。 #### 四、技术细节与优势 - **高性能**:梭子鱼LB440负载均衡机提供强大的服务器负载均衡性能,支持每秒100...