热门标签 | 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代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • RocketMQ在秒杀时的应用
    目录一、RocketMQ是什么二、broker和nameserver2.1Broker2.2NameServer三、MQ在秒杀场景下的应用3.1利用MQ进行异步操作3. ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 解读中台架构:微服务与分布式技术的区别及应用
    中心化与去中心化是长期讨论的话题。中心化架构的优势在于部署和维护相对简单,尤其在服务负载较为稳定的情况下,能够提供高效稳定的性能。然而,随着业务规模的扩大和技术需求的多样化,中心化架构的局限性逐渐显现,如扩展性和故障恢复能力较差。相比之下,微服务和分布式技术通过解耦系统组件,提高了系统的灵活性和可扩展性,更适合处理复杂多变的业务场景。本文将深入探讨中台架构中微服务与分布式技术的区别及其应用场景,帮助读者更好地理解和选择适合自身业务的技术方案。 ... [详细]
  • Nginx不仅是一款轻量级的高性能Web服务器,还具备出色的负载均衡和反向代理功能。它支持复杂的正则匹配规则、动静内容分离以及灵活的URL重写功能,使得配置和管理更加便捷高效。此外,Nginx提供了多种负载均衡算法,如轮询、加权轮询、最少连接数等,以满足不同应用场景的需求。 ... [详细]
  • 负载均衡基础概念与技术解析
    随着互联网应用的不断扩展,用户流量激增,业务复杂度显著提升,单一服务器已难以应对日益增长的负载需求。负载均衡技术应运而生,通过将请求合理分配到多个服务器,有效提高系统的可用性和响应速度。本文将深入探讨负载均衡的基本概念和技术原理,分析其在现代互联网架构中的重要性及应用场景。 ... [详细]
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社区 版权所有