题主,恭喜你,你深刻思考了一系列重要问题,做为一个开源技术人员+数据中间件的爱好者,试着回答一下题主的几个问题:html
1、何时须要数据中间件,中间件能干什么node
就像题主说的那样,随着业务的发展,MySQL、Oracle数据库里的表愈来愈大,一两年之后,2千万、甚至上亿记录的表就会出现了(通常能够简单认为表比较复杂的时候,MySQL几百万上千万的时候,Oracle几千万的时候,就会出现复杂查询或变动有性能问题),这时候可能会致使复杂的查询慢,插入和修改数据慢,修改表的DDL执行太慢致使没法修改列类型或者加索引或者加字段等等。怎么办呢?这时候咱们能够由几个处理办法:mysql
若是咱们的业务发展到了须要下降单库单表的压力、或者读写分离,而研发团队又不大,本身对这一块的技术积累不足以本身开发一些中间层代码去搞定问题,就像题主同样,须要考虑引入数据中间件了。为何都是国内大场开源的数据中间件,小公司数据量不够,或技术不够,不须要本身开发中间件,量上来之后,若是使用场景简单,采用开源技术是最经济的解决办法。大公司有能力本身搞定数据中间件,咱们如今知道的都是这部分里面开源出来的,特别是近几年,就像有个答主说的同样,你们都在搞分布式数据库了,分布式数据库的容量上限,远大于传统的关系数据库MySQL/Oracle,能够考虑是把中间件的部分功能固化到数据库里了,这些公司不太关注这些问题了。另外一方面,有些数据中间件,融入云的体系,变成闭源的RDS里的一部分了。git
2、数据中间件的实现原理,有哪些开源数据中间件github
简单的说,有两种原理:sql
早期主流的开源中间件以下图:数据库
引自:https://blog.csdn.net/w892824196/article/details/82660415apache
上面都是提到了分布分表和读写分离的中间件,其实还有一些专一于分布式事务的、数据复制传输的等等,好比fescar,canal、outter等等。架构
其实淘宝早期开源了TDDL,淘宝分布式数据中间层,可是只开源了客户端jdbc模式,没有开源proxy代理模式。并发
3、为何都是国内开源的,而且大都中止了更新
国内的开源,部分是大公司主导的技术影响力输出,部分是我的的兴趣之做贡献给社区,总而言之是没有直接的显著回报的。也就是说,这一块一直没有一个稳定可行的商业模式来支持,因此一直以来,大公司实际上也看不上,由于赚不了钱,而没有回报的事情就没法长久,因此天然就中止了更新。对于个别有云服务的公司,这一块技术发展好了,其实能够并到云里提供数据服务,或者进一步的发展成为分布式数据库,这样能够变现了,那就闭源,因此,如今活跃的开源数据中间件,已经很少了,下面就推荐一个活跃的项目。
4、推荐使用什么数据中间件--ShardingSphere
推荐使用近期加入Apache基金会的第一款数据中间件,也是国人开发的,ShardingSphere项目。能够直接在这个项目的github commits记录看到,很是活跃,天天都有提交记录,issue也一直在持续维护。为何还活得这么好呢?由于有张亮团队的专职在开发、维护和推广。
详细文档和代码参见:
ShardingSphere apache/incubator-shardingsphereShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各类多样化的应用场景。
ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并不是实现一个全新的关系型数据库。 它与NoSQL和NewSQL是并存而非互斥的关系。NoSQL和NewSQL做为新技术探索的前沿,放眼将来,拥抱变化,是很是值得推荐的。反之,也能够用另外一种思路看待问题,放眼将来,关注不变的东西,进而抓住事物本质。 关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,将来也难于撼动,咱们目前阶段更加关注在原有基础上的增量,而非颠覆。
稍后我推荐ShardingSphere项目的两个主要PMC,@张亮 和 @曹昊,来关注一下这个问题。