OSCHINA 本期高手问答(2017 年 7 月 12 日 — 7 月 18 日)我们请来了@叶金荣和@吴炳锡为大家解答 MySQL 中间件选型方面的问题。
叶金荣,知数堂培训联合创始人,Oracle MySQL ACE,MySQL 布道师。有多年 MySQL 及系统架构设计经验,擅长 MySQL 企业级应用、数据库设计、优化、故障处理等。
吴炳锡,知数堂联合创始人,MySQL DBA 课程讲师。有多年 MySQL 及系统架构设计及培训教学经验,擅长 MySQL 大规模运维管理优化、高可用方案、多 IDC 架构设计,企业级应用数据库设计等。
随着互联网的发展和数据量的不断增大,可以看到,当前互联网有两个常见的场景 —— 大数据量和高并发。因此,对数据库分库分表的需求也在不断的增加,随之而来的就是数据库中间件的开发。
关系型数据库凭借其稳定、查询灵活、兼容等特性,仍被大多数公司作为首选数据库。因此,合理采用分库分表技术应对海量数据和高并发对数据库的冲击,是各大互联网公司不可避免的问题。需求增加,对应的解决方案也随之增加。
所以,当前的数据库中间件可谓是百花齐放。那么问题来了,面对众多的数据库中间件,我们该如何选择,它们又有怎样的优缺点?
带着这些疑问,本期高手问答主要就 MySQL 中间件选型方面的问题进行讨论。欢迎大家踊跃提问,热烈讨论。
OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。
下面欢迎大家就 MySQL 中间件选型相关的问题向@叶金荣和@吴炳锡提问,请直接回帖提问,提问的时候请描述清楚具体的场景,以方便回答。
———————————————— 前期回顾 ————————————————
@叶金荣 @吴炳锡
Hi, Sir 数据库中间件有哪些? 都有些什么特点.
当数据量很大,并发很大的情况,单机的Mysql无法支撑的情况下(以后估计要做读写分离,分库分表),
我们考虑是使用 数据库中间件扩展 还是换 分布式数据库 如 HBase.
@叶金荣 1、分布式事务的中间件有没有推荐的?2、分库分表后,跨库的join查询结果合并有没有推荐的中间件?
看了大家的分提问我觉的必要说一下MySQL的中间件都有那些及定位。
在做MySQL相关工作这几年。 经常会面监以下问题:
1. 单机容量。 这个需要考虑引入拆分进行。 例如分库分表。 现在成熟的方案分成两类,一类由应用本身实现,另一类,借助于Proxy来实现。 应用本身实现的可以说非常灵活,可控度高,缺点: 需要有一个资深的DBA能给做出来规划; 借助于Proxy实现的优点: 透明的实现分库分表,让开发不用太多的关心分库分表,实质上开发必须知道,因为引入分库分表后,有很多局限性。缺点: 特别成熟的Proxy不多,总有多多少的问题,使用中需要团队有代码Hold住的能力。
2. 缓存平台: 在MySQL使用中肯定会有缓存或是NoSQL出现。 这个平台数据更新和MySQL协同。 对于缓存系统的可用性及雪崩控制。现在基本业界也比较直接了,都是redis cluster
3. 更新合并系统: 有很多动作可以在前端合并后,定期的刷入DB,如游戏系统人物在地图中的移动,就可以先写一个NoSQL系统,通过定制的持久化到DB中。 减少用户和DB交互的次数。
4. 数据合并写入: 大量写入时,可以考虑在DB写入前引入一个队列合并写入或是基于流式,在可控的情况下写入。让整个环境更可控。
5. 交易系统控制,也可以说是一个状态服务,在一个复杂的交易平台,例如一个用户下订单位,有可能涉及到帐号系统,冻结系统,优惠券系统,某些活动系统,物流系统等等。可能一个交易需要10几个环节,需要考虑用户下订单失败过程怎么处理,用户会不会重复下定单等。 这里也需要引入交易并发控制系统。
工作这么多年,经常打交道的中间件大多以上平台。 大家提的问题也比较发散,建议大家可以先参考下一下。
@叶金荣 mysql cluster可以分散数据节点,有官方支持,开发活跃;国内多用jdbc扩展(如当当sharding-jdbc)和mysql-proxy改进版(如360 atlas),那么请问,mysql cluster与这些中间件相比有哪些优劣?为什么国内用户不多?
@叶金荣 ,大佬如何看待TiDB这种“创新型”数据库?性能和可用性如何?
@叶金荣 @吴炳锡
数据库可以做版本控制吗?如何做?
@叶金荣 有哪些mysql的中间件啊?
@叶金荣 分布式事务是什么来的?多个mysql怎么实现分布式事务
@叶金荣 @吴炳锡 大数据高并发方面有什么好的经验介绍?
@叶金荣 @吴炳锡: 您好,在大数据上,有什么哪些方便使用的MySQL中间件?最好是轻量级的。对于MySQL的部署和运维,工作前景如何,有什么好的资料推荐吗?谢谢!