MySQL系列之八:中间件

5 篇文章 0 订阅

360 Atlas

    较为活跃,Atlas 是由 360 Web平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用 Atlas 运行的 MySQL 务,每天承载的读写请求数达几十亿条。

    主要功能:
    1. 读写分离
    2. 从库负载均衡
    3. IP过滤
    4. SQL语句黑白名单
    5. 自动分表(只能在同一个库中进行分表)

Cobar (不维护了)

Cobar是阿里巴巴(B2B)部门开发的一种关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。

    Cobar的分布式主要是通过将表放入不同的库来实现:
    1. 支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分
    2. 支持将不同的表放入不同的库
    3. 多数情况下,用户会将以上两种方式混合使用。

    这里需要强调的是,Cobar 不支持将一张表,例如test表拆分成test_1, test_2, test_3.....放在同一个库中,必须将拆分后的表分别放入不同的库来实现分布式。

    在用户配置了 MySQL 心跳的情况下,Cobar 可以自动向后端连接的 MySQL 发送心跳,判断 MySQL 运行状况,一旦运行出现异常,Cobar 可以自动切换到备机工作。

    但需要强调的是:
    1. Cobar 的主备切换有两种触发方式,一种是用户手动触发,一种是 Cobar 的心跳语句检测到异常后自动触发。那么,当心跳检测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常。

    2. Cobar 只检查 MySQL 主备异常,不关心主备之间的数据同步,因此用户需要在使用 Cobar 之前在 MySQL 主备上配置双向同步,详情可以参阅MySQL参考手册。

    其次,我们也需要注意Cobar的功能约束:
    1. 不支持跨库情况下的join、分页、排序、子查询操作。
    2. SELECT 语句执行会被忽略,事务和字符集设置除外。
    3. 分库情况下,insert 语句必须包含拆分字段列名。
    4. 分库情况下,update 语句不能更新拆分字段的值。
    5. 不支持 SAVEPOINT 操作。
    6. 暂时只支持 MySQL数据节点。

这里写图片描述

Mycat

    前身 Cobar,开源,较为活跃。

    特点:

    遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。
    基于心跳的自动故障切换,支持读写分离,支持 MySQL 一双主多从,以及一主多从
    有效管理数据源连接,基于数据分库,而不是分表的模式。
    基于 NIO 实现,有效管理线程,高并发问题。
    支持数据的多片自动路由与聚合,支持 sum , count , max 等常用的聚合函数。
    支持2表 join,甚至基于 caltlet 的多表 join。
    支持通过全局表,ER 关系的分片策略,实现了高效的多表 join 查询。
    支持多租户方案。
    支持分布式事务(弱xa)
    支持全局序列号,解决分布式下的主键生成问题。
    分片规则丰富,插件化开发,易于扩展。
    强大的 web,命令行监控。
    支持前端作为 MySQL 通用代理,后端 JDBC 方式支持 Oracle、DB2、SQL Server 、 mongodb 、巨杉。
    集群基于 ZooKeeper 管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

这里写图片描述

    参考有道:MySQL 中间件 Mycat【Blog】.note ,Blog:MySQL 中间件 Mycat

TDDL

    已经不再使用,下一代是 DDRS。


淘宝根据自己的业务特点开发了 TDDL (Taobao Distributed Data Layer 外号:头都大了 )框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource 实现,具有主备,读写分离,动态数据库配置等功能。

    TDDL 通过部署在客户端的 jar 包,将用户的 SQL 路由到指定的数据库中。

    功能:

    数据库主备和动态切换
    带权重的读写分离
    单线程读重试
    集中式数据源信息管理和动态变更
    剥离的稳定 jboss 数据源
    支持 MySQL 和 Oracle 数据库
    基于 JDBC 规范,很容易扩展支持实现 JDBC 规范的数据源
    无 Server,Client,Jar 形式存在,应用直连数据库
    读写次数,并发度流程控制,动态变更
    可分析的日志打印,日志流控,动态变更

这里写图片描述

Heisenberg

    整合 Cobar、TDDL,目前并不活跃,由百度员工个人编写。

    功能:

    分库分表与应用脱离,分库表如同使用单库表一样
    —减少 DB 连接数压力—
    热重启配置—
    可水平扩容
    —遵守 MySQL 原生协议
    —无语言限制,MySQLClient,C,Java等都可以使用

这里写图片描述
Heisenberg服务器通过管理命令可以查看,如连接数,线程池,结点等,并可以调整

Oceanus

    用得较少,58同城 Oceanus 致力于打造一个功能简单、可依赖、易于上手、易于扩展、易于集成的解决方案,甚至是平台化系统。拥抱开源,提供各类插件机制集成其他开源项目,新手可以在几分钟内上手编程,分库分表逻辑不再与业务紧密耦合,扩容有标准模式,减少意外错误的发生 datanode:数据源节点。为一个数据源命名,配置链接属性、报警实现。

    主要概念:

    namenode:数据源的簇。为一组数据源命名,指定这组数据源的负载方式、访问模式、权重
    table:映射表。匹配解析sql中的table名称,命中table标签的name属性值后,会执行约定的路由逻辑
    bean:实体。由其他标签引用,实体类必须有无参的构造函数
    tracker:监控埋点。涉及到计算和IO的功能点都有监控点,自定义一个埋点实现类,当功能耗时超出预期时会执行其中的回调函数,便于监控和优化系统

    ![这里写图片描述](https://img-blog.csdn.net/20170415102258383?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWR5YW5nMTEyNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

Vitess

    较全 高大上,和开发中的 Mycat2.0 类似。谷歌开发的数据库中间件,集群基于 ZooKeeper 管理,通过 RPC 方式进行数据处理,总体分为,server,command line,gui监控 3部分。
   ![这里写图片描述](https://img-blog.csdn.net/20170415102309018?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWR5YW5nMTEyNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 

OneProxy

    商业、收费。

    OneProxy 分布式中间件,是平民软件完全自主开发的分布式数据访问层,帮助用户在 MySQL/PostgreSQL 集群上快速搭建支持分库分表的分布式数据库中间件,也是一款具有 SQ L白名单(防 SQL 注入)及 IP 白名单功能的 SQL 防火墙软件。采用与 MySQL Proxy 一致的反向协议输出模式,对应用非常简单和透明易用,让用户畏惧的分库分表(Horizontal Partitioning)工作变得极其简单可控。基于 Libevent 机制实现,单个实例可以实现25万的 SQL 转发能力,用一个 OneProxy 节点可以带动整个 MySQL 集群。

DRDS(推荐)

    整合云服务,收费、Cobar、TDDL整合,商用,首选。

    阿里分布式关系型数据库服务(Distribute Relational Database Service,简称DRDS)是一种水平拆分、可平滑扩缩容、读写分离的在线分布式数据库服务。前身为淘宝 TDDL,是近千个应用首选组件,已稳定服务了七年以上。

这里写图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL是一个支持事务和ACID特性的关系型数据库。它可以通过使用中间件进行水平扩展和高可用性。Cetus是一个使用C语言开发的MySQL中间件,它提供了全面的数据库访问代理功能,使应用程序可以通过Cetus访问数据库而无需修改代码。 在MySQL中间件的事务处理中,有几种常见的方案和技术可供选择。其中一种方案是使用触发器和用户定义函数(UDF)。触发器可以在数据库中的特定事件发生时自动执行一系列操作,而UDF是一种自定义的函数,可以扩展MySQL的功能。然而,触发器不支持事务且效率较低。 另一种方案是使用开源的中间件,如阿里开源的cannel中间件和go-mysql-transfer中间件。这些中间件通过主从复制的方式将数据同步到中间件,并将中间件伪装成MySQL的从数据库。其中部署布隆过滤器可以解决缓存穿透问题,而数据预热和加锁机制可以解决缓存击穿和缓存雪崩问题。另外,多级缓存和后台更新线程也是解决缓存雪崩问题的有效方案。 因此,MySQL中间件的事务处理可以通过使用触发器、中间件和一些解决方案来实现数据的一致性和可靠性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql mycat 中间件安装与使用](https://download.csdn.net/download/weixin_38518958/13699558)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Cetus MySQL数据库中间件-其他](https://download.csdn.net/download/weixin_38738506/19590438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [中间件MYSQL](https://blog.csdn.net/qq_39256469/article/details/125482650)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值