34
回答
高手问答第 161 期 —— 追求性能和稳定,MySQL 中间件该如何选型?
终于搞明白,存储TCO原来是这样算的>>>   

OSCHINA 本期高手问答(2017 年 7 月 12 日 — 7 月 18 日)我们请来了@叶金荣@吴炳锡为大家解答 MySQL 中间件选型方面的问题。

叶金荣,知数堂培训联合创始人,Oracle MySQL ACE,MySQL 布道师。有多年 MySQL 及系统架构设计经验,擅长 MySQL 企业级应用、数据库设计、优化、故障处理等。

吴炳锡,知数堂联合创始人,MySQL DBA 课程讲师。有多年 MySQL 及系统架构设计及培训教学经验,擅长 MySQL 大规模运维管理优化、高可用方案、多 IDC 架构设计,企业级应用数据库设计等。

随着互联网的发展和数据量的不断增大,可以看到,当前互联网有两个常见的场景 —— 大数据量和高并发。因此,对数据库分库分表的需求也在不断的增加,随之而来的就是数据库中间件的开发。

关系型数据库凭借其稳定、查询灵活、兼容等特性,仍被大多数公司作为首选数据库。因此,合理采用分库分表技术应对海量数据和高并发对数据库的冲击,是各大互联网公司不可避免的问题。需求增加,对应的解决方案也随之增加。

所以,当前的数据库中间件可谓是百花齐放。那么问题来了,面对众多的数据库中间件,我们该如何选择,它们又有怎样的优缺点?

带着这些疑问,本期高手问答主要就 MySQL 中间件选型方面的问题进行讨论。欢迎大家踊跃提问,热烈讨论。

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就 MySQL 中间件选型相关的问题向@叶金荣@吴炳锡提问,请直接回帖提问,提问的时候请描述清楚具体的场景,以方便回答。

———————————————— 前期回顾 ————————————————

举报
局长
发帖于2周前 34回/4K+阅
共有34个答案 最后回答: 2天前

@叶金荣 @吴炳锡

Hi, Sir   数据库中间件有哪些?  都有些什么特点.

当数据量很大,并发很大的情况,单机的Mysql无法支撑的情况下(以后估计要做读写分离,分库分表),

我们考虑是使用 数据库中间件扩展 还是换 分布式数据库 如 HBase.

--- 共有 2 条评论 ---
wubx高并发系统很少会引入Proxy模型的中间件,因为大多这个是瓶颈。 更多的是应用层实现。 1周前 回复
ywhywl这个问题有点大,数据量大,需要考虑是更改的量很大,还是存储的数据量很大,还需要考虑场景,比如订单支付还是日志类型等等。。 1周前 回复

看了大家的分提问我觉的必要说一下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与这些中间件相比有哪些优劣?为什么国内用户不多?

--- 共有 1 条评论 ---
wubx首先说明,MySQL Cluster很优秀,我也见到一些场景使用,主要做持久化Cache使用; 没有做核心数据持久化使用。 国内用户不多的主要原因,现在已经进入海量数据的年代MySQL NDB Cluster决定是一个高富帅的解决方案。很多公司还是不愿意投这个成本。 1周前 回复

@叶金荣 ,大佬如何看待TiDB这种“创新型”数据库?性能和可用性如何?

--- 共有 3 条评论 ---
wubxTiDB感觉非常不错,Google已经走在了前面,也许是将来的趋势。但从产品的成熟度及稳定性上来讲,还是推荐MySQL。 周边各种东西都比较配套。 1周前 回复
添加软件跟aliyun的ads比如何? 2周前 回复
添加软件同问 2周前 回复

@叶金荣 @吴炳锡

数据库可以做版本控制吗?如何做?

--- 共有 2 条评论 ---
ZaneJoh 回复 @ywhywl : 比如要上一个新版本的业务,对线上的数据库有结构修改,如果发现有问题需要进行回滚,这时候回滚了代码,但是数据库结构修改了,可能会出现不兼容的情况 1周前 回复
ywhywl数据库做版本控制,还是发布的表结构做版本控制, 我的理解是后者, 如果规范不允许删除线上的表或者列,做一个复杂的版本控制我觉得意义不是特别大呢,是否可以说说具体的需求场景 1周前 回复

@叶金荣  @吴炳锡 大数据高并发方面有什么好的经验介绍?

--- 共有 2 条评论 ---
wubx这个问题很大,我觉的需要氢把握一个原则,在有限的控制下并发,不能无节制,不控制的并发。 在高并发系统下,更需要强调可控。 1周前 回复
ywhywl问题感觉有点大,这个还是要根据具体的情况才做对于的策略吧 1周前 回复
顶部