sn-shard

a murmurhash based redis sharding algorithm implementation for eggache passport.

Usage no npm install needed!

<script type="module">
  import snShard from 'https://cdn.skypack.dev/sn-shard';
</script>

README

简介

为passport实现的node版的redis分片算法,目的是为了和java端分片算法根据sessionID映射相同的shard,底层基于murmurhash算法。

v1.1.0开始murmurhash-native使用离线版本。

安装

npm install sn-shard --save

使用

var nodeShard = require('sn-shard');
//your custom config
var shardConfig = [
    {name: 'shard1', weight: 1, server: [{port: 6379, host: '127.0.0.1'}]},
    {name: 'shard2', weight: 1, server: [{port: 6379, host: '127.0.0.1'}]},
    {name: 'shard3', weight: 1, server: [{port: 6379, host: '127.0.0.1'}]},
    {name: 'shard4', weight: 1, server: [{port: 6379, host: '127.0.0.1'}]},
];
nodeShard.init(shardConfig);
...
var shard = nodeShard.getShard(sessionID);

测试

npm run test

得到test/output.txt,可以与output_java.txt对比,查看两者映射的shard是否一致。

由于写文件是异步的,所以可能顺序不一致,需要自己写个简单的脚本测试两个文件内容是否相同。我在本地测试了10000组随机数,得到的结果和Java端一致。由于本人水平太菜,Java端代码就不放出了,如感兴趣可以豆芽找本人(13075766)索要Java代码