`
dai0909
  • 浏览: 8739 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

从应用层面来实现数据库负载均衡

 
阅读更多

从应用层面来实现数据库负载均衡

      问题的由来:

    以前维护的系统经常宕机,究其原因是开发管理不善,造成程序质量不佳。撇开制度管理的原因不谈(那是技术人员无法解决的),其表象原因有二:一、授权程序设计不佳,造成整个系统运行缓慢;二、有很多程序中有几个大表的join语句,只要这种程序多跑几个,管你是什么IBM小型机通通垮掉。

    问题的解决方案:

    我曾想把所有系统翻一遍,但由于成本原因不可行。后来上了BIGIP,算是解决了中间件的负载问题,但中间件的负载一解决,所有的压力都集中到数据库,经常是数据库的问题造成整个系统垮掉。其表象原因为有很多程序中有几个大表的join语句,只要这种程序多跑几个,管你是什么IBM小型机通通垮掉。直到我离开维护岗,这个问题也没解决。现如今闲下来,我总在想,能用什么便宜的方法来实现数据库负载均衡,使得一些病入膏肓的系统能死得慢一点。

     1、多写少读。

      其实,数据库之所以压力大,主要是读取的原因造成的。因为写入总是很快的,主要是频繁的多表联合查询造成数据库资源消耗。那么除了在数据表中增加冗余字段来避免联合查询外,有没有比较好的办法来解决呢?

     假如能有2个或多个数据库,都有一样的表,互为镜像,那么应用程序在写入数据时可以写入多个数据库,读的时候可以按系统别或压力值来分别读取不同的数据库,那么相当于把查询的压力分散开,便于问题的定位和负载均衡,可这带来一个问题,那就是如何保证这多个数据库的表的记录都是一样的?

      假如我们在应用和数据库之间再加入一层,把所有的写入请求都向这一层转发,这一层我们姑且称之为负载控制层,当负载控制层向多个数据库写入时,发现其中一个数据库有问题,所有操作立即回滚,以保证所有数据库的数据一致。

        并且在这一层有日志功能,如发生断电或其它灾难性故障,可根据日志来前滚或后滚,保证所有数据库数据一致。

      读取数据库的时候就不通过这一层来转发了,直接在应用底层根据对照表或数据库压力表来决定读哪一个数据库,这样可以保证系统架构不会太复杂。

      这只是我临时想到的一些东西,有不妥之处,欢迎大家指正。

分享到:
评论

相关推荐

    数据库集群在医疗教育领域的应用

    在医疗教育领域,如何构建SQL Server数据库负载均衡集群,来真正实现数据库层面的高可用性、数据安全、负载均衡及横向扩展,提升系统性能、降低成本。

    数据库集群技术

    一般来讲,集群软件根据侧重的方向和试图解决的问题,分为三大类:高性能集群(High performance cluster,HPC)、负载均衡集群(Load balance cluster, LBC),高可用性集群(High availability cluster,HAC)。...

    数据库集群技术有哪些?.doc

    一般来讲,集群软件根据侧重的方向和试图解决的问题,分为三大类:高性能集群(High performance cluster,HPC)、负载均衡集群(Load balance cluster, LBC),高可用性集群(High availability cluster,HAC)。...

    基于图数据库存储引擎的CMDB系统.pdf

    云计算平台模型分析 云计算技术通过虚拟化为业务系统提供了虚拟机、云硬盘、虚拟网络、 负载均衡等虚拟化的基础设施资源, 同时, 这些虚拟化的基础设施资源依赖数 据中心最底层的物理基础设施。 在数据中心中, 从...

    应用服务器中间件技术要求.doc

    " "集群与可用性要"必须支持通过Apache、IIS实现集群、负载均衡和系统 " "求 "扩展。 " " "支持多服务器群集部署、负载均衡、组件级的失效即时" " "恢复(Fail Over)。支持Web层的集群和EJB集群。应 " " "提供较...

    mysql数据库备份设置延时备份方法(mysql主从配置)

    一 为什么需要延时备份percona-xtrabackup是一个优秀的用于增量备份的工具。今天我们讲到的延时备份也是使用他们...在生产中,我们在使用 mysql AB 复制技术不但可以起到数据库层面负载均衡的能力,还可以起到备份数据

    政务云建设建议书.docx

    政务云IaaS层,提供硬件和软件基础设施服务,具体可包括云主机、云存储、云网络、云数据库、云负载均衡和云安全等服务;政务云SaaS层向云用户提供即开即用的软件服务;政务云PaaS层,提供统一的云应用框架、开发测试...

    compass:Compass是一个轻量级的嵌入式分布式数据库访问层框架

    Compass是搜狗商业平台研发部开发的一套轻量级的分布式数据库访问框架,支持单库、主从库读写分离、分库、分库之后再分表、从库负载均衡和HA等使用场景,并且在框架层面提供了主从反延迟策略。Compass采用Spring配置...

    大并发量访问架构分析

    只有对客户连接和数据库连接进行科学的管理和组织,实现应用服务层,才能过既提高了数据核心的效率,又使系统的功能、性能都方便扩展和调整。本文从连接管理、应用服务、应用服务扩展方面分析系统架构,并介绍了IS...

    基于微软Azure、.NET Core和Docker的博客系统.zip

    比如没有做负载均衡,没有使用托管的应用宿主服务(比如Azure Web App、Container Service等),没有使用Scaleset。因为目前没必要而且没钱更多说明,详见作者的博客:http://daxnet.me/blogposts/post/221 ...

    curve分布式存储系统-其他

    在一致性层面选择了基于quorum机制并且开源的braft,从协议层面来说quorum机制在延迟方面天生优于多副本强一致的方式。实现上curve对braft快照的实现进行了优化,在状态机的实现上采用chunkfilepool的方式(初始化...

    阿里云java短信验证码源码-xxtj:政务求助平台拖欠工资举报平台欠薪举报系统政务欠薪处置系统投诉欠薪处理平台根治欠薪系统

    支持多少用户和并发等,得看你服务器配置,是否集群,负载均衡, 数据库读写分离,宽带情况等综合因素 5.系统应用案例:此平台为定制开发项目外包,已目前没有发现不稳定。 6.代码更新/升级购买说明:免费提供一年的...

Global site tag (gtag.js) - Google Analytics