您的位置:首页 > 数据库

数据库中间件的选型的思考(转载)

u013099854 2020-05-11 04:13 274 查看 https://blog.csdn.net/u0130998

背景:随着业务的增长,各种业务数据的快速增长,单表数据量的急剧增长,单表的读写性能以及吞吐量呈下降的趋势。因此需要使用分库分表的机制来保证服务的高性能,然而开源的数据库中间件众多,从中挑选一款合适的中间件必须要考虑的

问题:

  • 什么时候使用中间件,中间件作用
  • 中间件原理,开源的中间件
  • 推荐使用的中间件

1.中间件的使用时机

业务的发展使数据库中的数据量变大,几千万或者上亿级别的数据表出现,这时可能会导致查询变慢、插入或者修改数据变慢,甚至执行DDL语句会变得非常慢导致无法修改列或者添加索引,解决办法;

历史表:按照时间进行拆分,降低主表的数据量,属于水平切分,对于业务依赖比较严重

垂直切分:将数据库中列比较多的表拆分成多个列少的表。不降低记录数,但是降低表整个表的数据量和索引量大小

水平切分:按照某个或者某些个列的值哈希后,均匀的将数据拆分到多个同样的库里

读写分离:如果数据库的TPS/QPS比较高,可以做成一主多从或者多主多从,将读的压力分散,降低数据库的压力

2.中间件的原理

客户端jdbc模式:中间件直接在项目中引用,配置好分库分表规则,用中间件包装一层jdbc数据源,每次调用的时候,jdbc根据相应的规则处理替换好SQL语句,调用实际的JDBC与SQL,即可完成操作,该中间件不适合负载的聚合操作

代理模式

 

早期主流的开源中间件如下图:

 

 

  • Cobar:阿里巴巴B2B开发的关系型分布式系统,管理将近3000个MySQL实例。 在阿里经受住了考验,后面由于作者的走开的原因cobar没有人维护 了,阿里也开发了tddl替代cobar。
  • MyCAT:社区爱好者在阿里cobar基础上进行二次开发,解决了cobar当时存 在的一些问题,并且加入了许多新的功能在其中。目前MyCAT社区活 跃度很高,目前已经有一些公司在使用MyCAT。总体来说支持度比 较高,也会一直维护下去,
  • OneProxy:数据库界大牛,前支付宝数据库团队领导楼总开发,基于mysql官方 的proxy思想利用c进行开发的,OneProxy是一款商业收费的中间件, 楼总舍去了一些功能点,专注在性能和稳定性上。有朋友测试过说在 高并发下很稳定。
  • Vitess:这个中间件是Youtube生产在使用的,但是架构很复杂。 与以往中间件不同,使用Vitess应用改动比较大要 使用他提供语言的API接口,我们可以借鉴他其中的一些设计思想。
  • Kingshard:Kingshard是前360Atlas中间件开发团队的陈菲利用业务时间 用go语言开发的,目前参与开发的人员有3个左右, 目前来看还不是成熟可以使用的产品,需要在不断完善。
  • Atlas:360团队基于mysql proxy 把lua用C改写。原有版本是支持分表, 目前已经放出了分库分表版本。在网上看到一些朋友经常说在高并 发下会经常挂掉,如果大家要使用需要提前做好测试。
  • MaxScale与MySQL Route:这两个中间件都算是官方的吧,MaxScale是mariadb (MySQL原作者维护的一个版本)研发的,目前版本不支持分库分表。MySQL Route是现在MySQL 官方Oracle公司发布出来的一个中间件。
  • ShardingSphere,后起之秀,源于当当网架构部的ShardingJDBC框架。

3.推荐使用什么数据中间件--ShardingSphere

推荐使用近期加入Apache基金会的第一款数据中间件,也是国人开发的,ShardingSphere项目。可以直接在这个项目的github commits记录看到,非常活跃,每天都有提交记录,issue也一直在持续维护。为什么还活得这么好呢?因为有张亮团队的专职在开发、维护和推广。

详细文档和代码参见:

ShardingSphere​shardingsphere.apache.org apache/incubator-shardingsphere​github.com

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。

ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。 它与NoSQL和NewSQL是并存而非互斥的关系。NoSQL和NewSQL作为新技术探索的前沿,放眼未来,拥抱变化,是非常值得推荐的。反之,也可以用另一种思路看待问题,放眼未来,关注不变的东西,进而抓住事物本质。 关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。

更加详细的讲解请看:https://www.cnblogs.com/jpfss/p/11577780.html

守望希望 原创文章 10获赞 0访问量 837 关注 私信
标签: