Cobar路由算法

作者: Better朔 | 来源:发表于2018-04-26 14:38 被阅读0次

    单维路由

    (单维路由根据单个路由字段值判断SQL应当分发到哪个分库执行)

            将[0-1023]分为不同的区段,每个区段代表一个分库,其中区段的个数以及每个区段的长度由用户自定义;

            用SQL中的拆分字段值对1024取模,结果落入哪个区段,SQL便被路由到那个分库执行(如果拆分字段不是数值类型,则首先做一次hash)

    基本示例

            假设现在需要将一张表平均拆分到4个分库,路由字段为字符串类型。

            首先将[0-1023]平均分为4个区段,[0-255],[256-511],[512-767],[768-1023], 然后对字符串(或子串,由用户自定义)做hash, hash结果对1024取模,最终得出的结果落入那个区段,便路由到哪个分库。

        在Cobar配置中,我们把区段的个数成为partitionCount, 每个区段的长度为partitionLength,满足∑(partitionCount* partitionLength) = 1024。

    function定义如下:

    function定义

    ps.从笔记上贴过来乱码,不知道是不是特殊字符的问题~请原谅哈

    假如路由字段是数值类型,按照如下配置

    扩容

            这种路由方法可以很容易实现扩容,假设现在需要将4个分库扩容为8个分库,只需要将[0-1023]平分为8个区段即可,如下:

    不均匀分布

        如果需要不均匀分库,则将[0-1023]分成不均匀的区段即可:

    多维路由自定义路由算法

            用户可以自定义路由算法,具体可以参照com.alibaba.cobar.route.function.PartitionByLong或者com.alibaba.cobar.route.function.PartitionByString编写代码

    相关文章

      网友评论

        本文标题:Cobar路由算法

        本文链接:https://www.haomeiwen.com/subject/dloplftx.html