问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql cluster和cobar的使用场景分别是什么样子的

发布网友 发布时间:2022-04-23 20:49

我来回答

2个回答

懂视网 时间:2022-04-30 04:39

Cobar是阿里巴巴研发的关系型数据的分布式处理系统,是提供关系型数据库(MySQL)分布式服务的中间件,该产品成功替代了原先基于Oracle的数据存储方案,它可以让传统的数据库得到良好的线性扩展,并看上去还是一个数据库,对应用保持透明。

  • 产品在阿里巴巴稳定运行3年以上。
  • 接管了3000+个MySQL数据库的schema。
  • 集群日处理在线SQL请求50亿次以上。
  • 集群日处理在线数据流量TB级别以上。
  • Cobar的核心功能:

    技术分享

    分布式:

    Cobar的分布式主要是通过将表放入不同的库来实现:

  • Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分
  • Cobar也支持将不同的表放入不同的库
  • 多数情况下,用户会将以上两种方式混合使用
  • 要强调的是,Cobar不支持将一张表,例如test表拆分成test_1, test_2, test_3…..放在同一个库中,必须将拆分后的表分别放入不同的库来实现分布式。

    HA:

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

  • Cobar的主备切换有两种触发方式,一种是用户手动触发,一种是Cobar的心跳语句检测到异常后自动触发。那么,当心跳检测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常。
  • Cobar只检查MySQL主备异常,不关心主备之间的数据同步,因此用户需要在使用Cobar之前在MySQL主备上配置双向同步,详情可以参阅MySQL参考手册。
  • Cobar的功能约束

  • 不支持跨库情况下的join、分页、排序、子查询操作。
  • SET语句执行会被忽略,事务和字符集设置除外。
  • 分库情况下,insert语句必须包含拆分字段列名。
  • 分库情况下,update语句不能更新拆分字段的值。
  • 不支持SAVEPOINT操作。
  • 暂时只支持MySQL数据节点。
  • 使用JDBC时,不支持rewriteBatchedStatements=true参数设置(默认为false)。
  • 使用JDBC时,不支持useServerPrepStmts=true参数设置(默认为false)。
  • 使用JDBC时,BLOB, BINARY, VARBINARY字段不能使用setBlob()或setBinaryStream()方法设置参数。
  • Cobar逻辑层次图

    技术分享

  • dataSource:数据源,表示一个具体的数据库连接,与物理存在的数据库schema一一对应。
  • dataNode:数据节点,由主、备数据源,数据源的HA以及连接池共同组成,可以将一个dataNode理解为一个分库。
  • table:表,包括拆分表(如tb1,tb2)和非拆分表。
  • tableRule:路由规则,用于判断SQL语句被路由到具体哪些datanode执行。
  • schema:cobar可以定义包含拆分表的schema(如schema1),也可以定义无拆分表的schema(如schema2)。
  • Cobar支持的数据库结构(schema)的层次关系具有较强的灵活性,用户可以将表自由放置不同的datanode,也可将不同的datasource放置在同一MySQL实例上。在实际应用中,需要通过配置文件(schema.xml)来定义我们需要的数据库服务器和表的分布策略。

    Cobar的实现原理

    Cobar的前、后端模块都实现了MySQL协议;当接受到SQL请求时,会依次进行解释(SQL Parser)和路由(SQL Router)工作,然后使用SQL Executor去后端模块获取数据集(后端模块还负责心跳检测功能);如果数据集来自多个数据源,Cobar则需要把数据集进行组合(Result Merge),最后返回响应。

    技术分享

    Cobar采用了主流的Reactor设计模式来处理请求,并使用NIO进行底层的数据交换,这大大提升系统的负载能力。其中,NIOAcceptor用于处理前端请求,NIOConnector则用于管理后端的连接,NIOProcessor用于管理多线程事件处理,NIOReactor则用于完成底层的事件驱动机制,就是看起来和Mina和Netty的网络模型比较相似。

    技术分享

    参考文档:https://github.com/alibaba/cobar

    转自:http://www.biaodianfu.com/cobar.html

    Cobar_基于MySQL的分布式数据库服务中间件

    标签:

    热心网友 时间:2022-04-30 01:47

    mysql cluster和cobar的我没使用过,仅仅从认识上说下。
    这些都算不是主流的技术,所以仅就使用场景来说,其实很有限,因为你需要面对很多约束。比如MySQL cluster可能需要你的所有数据都hold在内存里,我不习惯许多人说“使用场景”这个说法,实际上,这只能说明能用,但现实中,选择一种产品,考虑的因素很多,能用往往并非决定性的因素。
    MySQL cluster主要确保的是高可用,这是实际的分布式数据库产品,一种share-nothing的架构,如果数据规模不是超大的话,一般可以满足需要,但理论上,其扩展性是有极限的,因为节点增多,节点之间的数据同步会影响到性能,这是其架构决定的。
    cobar属于中间件产品,其后端仍然是MySQL,由于MySQL本质上不是一个分布式数据库产品,所以cobar的应用会有许多局限,比如不支持跨库的join,如果要使用,一定要清楚它的*。它可以简化水平扩展,理论上是可以提供极佳的扩展能力的。
    相对而言,cobar这种方式会更更具实践意义,因为传统的分库分表本来就是非常成熟的技术,cobar简化了这个过程,大规模的集群也许能带来开发和扩容的便利。而MySQL Cluster,如果你不是专家,可能会碰到很多问题,现实中,MySQL Cluster可以解决的问题,传统的架构也能解决,所以没有那么迫切要使用这个产品。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    江苏海事职业技术学院提前招生专业有哪些? 江苏海事职业技术学院是985还是211 江苏海事职业技术学院是全日制吗? 江苏海事职业技术学院地址在哪里 江苏海事职业技术学院有哪些学院? 江苏海事职业技术学院在南京有几个校区,新生报道是到哪个校区 江苏海院是本科吗 江苏海事职业学院是几类大学? 江苏海事职业学院怎么样 正确使用mysqlupdate语句 mysql有什么好的特性? MySQL集群和主从复制分别适合在什么场景下使用 谈谈mongodb,mysql的区别和具体应用场景 mysql 等关系型数据库 的应用场景有何异同 在什么场景下,你会选用mysql做为数据库,什么场景下,会选用oracle做为数... mysql的存储引擎有哪些,有什么区别,适用场景 mongodb mysql 分别适合什么场景 mysql有那些索引?分别在什么场景使用 mysql中事务的主要应用场景是什么 用经纬仪怎样测量90度直角 经纬仪怎么用,调平我会调,90度不太懂 全站仪测回法步骤 经纬仪的计算方法 试述经纬仪测绘法一个测站上的施测步骤有哪些 怎样正确操作DJ6经纬仪?和正确记录数据? 经纬仪测90度直角怎么操作? 简述用经纬仪一个测回观测a,b,c,d四个方向步骤 简述用DJ6经纬仪进行测回法观测水平角的步骤 用全站仪测回法测量水平角的方法步骤 详细操作步骤?2个测回哦!详细点,谢谢哦 经纬仪测绘法(已知距离、角度)在一个测站测绘地形图的工作步骤? Mysql数据库中,事务是指什么?如何使用该功能? mysql8好用吗?现在用的多吗? mysql的自然连接和内连接,大家觉得什么场景 有没有可以监测微信小程序的系统? 群报数小程序很卡 通过微信小程序可以监控手机吗 小程序怎么实现页面返回事件监听 微信小程序前端如何监听用户登录了多少次 微信小程序监督警务人员,这个形式怎么看 微信小程序监狱是哪个远程会见? 微信小程序前端如何监听用户浏览页面的次数 微信小程序怎么监听scrollview滑动结束 联想padpro 可以用微信小程序监督吗 微信小程序能源监测系统充不了钱了怎么办 如何查看微信小程序实时运行内存 CAD四级证书是什么级别的? 如何制作excel图表下拉菜单 CAD的证书考试是怎么样子的,是国考。还是什么? 请问什么是CAD证书? EXCEL表格里图表怎么做下拉列表