zoukankan      html  css  js  c++  java
  • shardingsphere

    shardingsphere(https://github.com/apache/shardingsphere)是一套开源的分布式数据中间件,可以在JDBC层, Proxy层进行SQL路由。 可以完成数据库读写分离, 数据分片等。 
    数据库库中间件一般会在两个地方:
    1. 项目的JDBC层:对项目浸入较小,但是要有对应的SDK, 如果公司项目语言比较多,就需要开发对应的SDK。 因为直通数据库层,所以性能损失小。 
    2. Proxy:独立部署,对项目完全没有影响,只需要把项目中的DB URL, 改为proxy地址即可,跨语言,但是相比之前要多一次序列化,所以对性能有些损耗,而且Proxy需要做高可用, 部署上会有一些复杂。 
    shardingsphere对上面两项都支持。作为一个数据库中间件,核心就是SQL路由,同时要考虑的问题其实也很多。 
    1. 对于JDBC层的中间件,如何对项目低侵入。
    2. SQL解析的性能。 
    3. 批量SQL
    4. 如果没有命中分片,如何处理? 结果合并。 
    5. 事务。 
    上面的一些问题在shardingsphere中都有体现,具体可以参考源码。 
     
     
    这里多说两句:
    1.  读写分离并不能完全按照sql语句的类型进行分离,因为主从数据库之间会有延迟,所以还要有预留扩展可以人为指定路由到哪个数据库。 
    2. 为了解决单表数据量大和访问压力的问题,我们将数据改为分表分库模式, 分表分库的确可以解决当下的问题,但不是最终的银弹,它也遗留了一些问题,比如当数据量再次达到单表阈值的时候, 我们就要再次扩展。  如果流量暴增,分表分库也出现压力的时候,并没有很好的方式来快速解决问题。业务站点因为无状态,所以很容易做扩展 ,但是数据库上存储数据,并不能很好扩展,而且即使有迁移方案,因为数据量大,迁移速度也并不快。 目前在找一种方案,能够对数据做平滑扩展,能够对数据做rebalance, 目前正在研究TiDB。
     
     
     
  • 相关阅读:
    JavaWeb--HttpSession案例
    codeforces B. Balls Game 解题报告
    hdu 1711 Number Sequence 解题报告
    codeforces B. Online Meeting 解题报告
    ZOJ 3706 Break Standard Weight 解题报告
    codeforces C. Magic Formulas 解题报告
    codeforces B. Sereja and Mirroring 解题报告
    zoj 1109 Language of FatMouse 解题报告
    hdu 1361.Parencodings 解题报告
    hdu 1004 Let the Balloon Rise 解题报告
  • 原文地址:https://www.cnblogs.com/beyondbit/p/13519347.html
Copyright © 2011-2022 走看看