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。
     
     
     
  • 相关阅读:
    cucumbe无法识别中文场景的问题
    springboot启动报错Failed to configure a DataSource
    ADB interface驱动
    stock1114
    ojdbc6下载地址
    用count sql做jmeter的while条件
    python各模块组合实例
    python csv与字典操作
    python OrderDict
    python3 aes加解密
  • 原文地址:https://www.cnblogs.com/beyondbit/p/13519347.html
Copyright © 2011-2022 走看看