Spider引擎分布式数据库解决方案(最全的spider教程)
最近开始负责财付通的数据库的相关维护工作,其中有几套系统使用的spider引擎,为了以后能更好地对这套系统进行维护,对spider做了一些功课,将spider引擎的功能、使用场景、部署、实战测试等做个简单的总结,希望不了解spider引擎的同学看到这篇文章能对spider引擎有个更深入的了解。
先来说两个我们DBA经常遇到的场景:
场景1:有两个分布在不通实例上的多张不通的表,想要通过某个字段关联,做一个统计,或者想将分布在不同实例的表,合并到一个实例中来做一些查询。
场景2:由于数据库容量的瓶颈或者是由于数据库访问性能的瓶颈,将一某一个大库、大表或者访问量非常大的表进行拆分,然后分布到不通的实例中。
这两种场景覆盖了我们DBA经常接触的垂直拆分和水平拆分,在这种场景下往往面临着如下几个窘境:
1、这些表的访问和存取需要额外的路由规则,复杂度很高
2、需要做数据汇总或者统计的时候,非常麻烦
我们想到的解决办法可能有如下几种:
1、使用数据库中间件(Mysql fabric/TDDL/cobar/Atlas/Heisenberg/Vitess)
这个似乎是大公司的专用的,由于存在各种各样的限制,小公司往往使用起来非常不方便,对于里面存在的各种坑也没办法很好的进行规避。
2、使用mysql分区表
无法解决磁盘空间瓶颈以及服务器性能瓶颈。
3、使用GaleraCluster for MySQL
支持数据库的高可用以及能实现读请求的扩展,但是对于写请求无法实现性能上的突破。
4、使用mysql的多源复制
仅仅适合将多个实例的数据聚合到一起,用来做数据统计,但还是存在磁盘空间的瓶颈。
5、使用federated
可以实现将数据聚合,对于水平分割的场景并不适用,并且性能方面也存在比较大的问题。
6、MySQL Sharding和spider
mysql cluter是mysql sharding的一