热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

分库分表数据库中间件对比

(一)关键问题1.读写分离2.分库分表3.类别lib库1)业务直接到数据库,少一层proxy效率更高2)没有proxy的lvs的单点问题proxy1)统一管理所有到数据库的连接,连

(一)关键问题

1.读写分离

2.分库分表

3.类别



  • lib库

1)业务直接到数据库,少一层proxy效率更高

2)没有proxy的lvs的单点问题



  • proxy

1)统一管理所有到数据库的连接,连接复用

2)基础查询功能抽象,减少代码耦合

3)易于实现监控、数据迁移、连接管理等功能

(二)sharding-jdbc(开源,lib)

        当当应用框架ddframe中,从关系型数据库模块dd-rdb中分离出来的数据库水平分片框架



  • 功能

1)以jar包形式提供服务

2)分片灵活,支持等号、between、in等多维度分片

3)sql解析,支持聚合、分组、排序、limit、or等



  • 结构



  • 特点

1)分片规则:策略自定义、复数分片数

2)JDBC规范重写:针对DataSource、Connection、Statement、PreparedStatement和ResultSet接口封装

3)sql解析:druid

4)sql改写:修改逻辑表名->真实表名;替换不支持的功能,如:avg->sum和count

5)sql路由:单表路由、binding表路由、笛卡尔积路由

6)sql执行:多线程并发执行sql

7)结果归并:遍历类、排序类(归并排序)、聚合类(比较型、累加型、平均型)、分组类

(三)mycat(开源,proxy)

        社区爱好者在阿里cobar基础上进行二次开发,解决了cobar的一些问题,且加入了新的功能。

 



  • 功能

1)遵守mysql原生协议

2)基于心跳的自动故障切换

3)支持读写分离,支持mysql主从

4)支持sum、count、max等聚合,支持跨库分页

5)支持服务降级

6)安全,IP白名单、sql注入攻击拦截、prepare预编译



  • 原理

拦截:分片分析、路由分析、读写分离分析、缓存分析

 

(四)DBproxy(开源,proxy)

        针对atlas进行改进,形成了新的高可靠、高可用企业级数据库中间件DBProxy



  • 功能

1)读写分离

2)负载均衡

3)slave故障感知&摘除

4)连接池

5)自定义sql拦截&过滤

6)流量分组&控制

7)监控状态

(五)atlas

        360团队基于mysql proxy把lua用c改写,在高并发下经常会挂掉。

(六)oneproxy(不开源,proxy)

        基于mysql协议的数据库中间件。利用c进行开发的,专注于性能和稳定性。



  • 功能

透明sql路由(实现后端mysql数据库的集群化部署)和流量分析(为上层应用和底层数据库集群提供丰富的性能监控功能)。

1)复用数据库连接,降低数据库并发连接数

2)即时发现和剔除不可用的后端节点,转发应用请求实现高效故障隔离

3)内置守护进程模式和ha vip机制,确保高可用

4)查询语句分离,跨分片结果集合并,根据分片并行执行sql

5)读写分离

6)对sql语句进行安全检查,拒绝危险的DDL操作

7)分别设置前端应用和后端数据库的sql请求频率,实现QoS控制

8)实时透明分析流量,实时统计sql和事务的运行时间,分析事务的sql结构



  •  特点

语言:C&C++开发

网络事件:libevent框架

内存分配:jemalloc优化

QPS:单实例支持40W

连接池:透明连接池的功能,具备mysqk企业版连接池效果

主备:实现透明的读写分离路由

安全:sql请求类别;请求IP;每个sql请求实时检查&拦截

流量分析:IP维度、事务维度展示&分析

稳定:内置高可用、也可与zookeeper等配合

 

(七)vitess

        Youtube上产使用的,架构复杂



推荐阅读
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 什么是网关服务器初学linux服务器开发时,我们的服务器是很简单的,只需要一个程序完成与客户端的连接,接收客户端数据,数据处理,向客户端发送数据。但是在处理量很大的情况下,一 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 如何使用代理服务器进行网页抓取?
    本文介绍了如何使用代理服务器进行网页抓取,并探讨了数据驱动对竞争优势的重要性。通过网页抓取,企业可以快速获取并分析大量与需求相关的数据,从而制定营销战略。同时,网页抓取还可以帮助电子商务公司在竞争对手的网站上下载数百页的有用数据,提高销售增长和毛利率。 ... [详细]
  • SQL Server 内存中OLTP内部机制概述(一)
    内存中OLTP(项目名为“Hekaton”)是一个新的完全集成到SQLServer中的数据库引擎组件。它专为访问内存常驻数据的OLTP工作负荷而进行优化。内存中OLTP有助于OLT ... [详细]
  • POCOCLibraies属于功能广泛、轻量级别的开源框架库,它拥有媲美Boost库的功能以及较小的体积广泛应用在物联网平台、工业自动化等领域。POCOCLibrai ... [详细]
  • 目录Atlas介绍Atlas部署Atlas基本管理Atlas结合MHA故障恢复读写分离建议Atlas介绍Atlas是由Qihoo360Web平台部基础架构团队开发维护的一个基于My ... [详细]
author-avatar
添莺_764
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有