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。
     
     
     
  • 相关阅读:
    为WebApi项目增加用户注册功能
    仿MVC ModelBinder功能
    C++你可能不知道地方
    跟我一起学XNA让移动物体撞起来(附源码)
    系统计数器与硬件分析
    好用的 VS扩展
    SearchEasy SearchEngine Framework(搜易SDK) 开源
    Debian Linux下的Python学习——入门
    一步一步实现网站的多语言版本
    asp.net的各种调试方法
  • 原文地址:https://www.cnblogs.com/beyondbit/p/13519347.html
Copyright © 2011-2022 走看看