zoukankan      html  css  js  c++  java
  • 分库分表数据库中间件对比

    (一)关键问题

    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上产使用的,架构复杂

  • 相关阅读:
    caffe:mac10.12安装caffe的步骤
    查找两个链表的共同子链表
    golang:1.并发编程之互斥锁、读写锁详解
    git问题汇总
    有用的技术工具
    maven 安装本地jar包到本地maven仓库
    win7下Hadoop学习 之 Cygwin下载、安装、配置
    简单目录备份脚本
    2021年01月28日微博热搜汇总
    2021年01月26日微博热搜汇总
  • 原文地址:https://www.cnblogs.com/taoxinrui/p/6782791.html
Copyright © 2011-2022 走看看