redis 分布式中间件设计分析
一、客户端bean实例化的时候
1、读取配置文件,从配置文件中获取哨兵,分片等信息
2、访问哨兵,根据分片masterName 从哨兵中获取主机和丛机ip及端口号数据
3、依赖jedis组件,重新封装Jedis 和 JedisPool 类,使之能够根据读写策略,读的时候随机选择主机或者丛机进行读,写的时候选择主机进行写
4、重新封装ShardedJedis,使其能够根据key进行分片,且采用一致性hash算法进行分片计算
5、添加zk对应的配置文件节点监听,当节点数据发生变化时,重新根据redis连接资源
6、对每个shard添加订阅主从变更数据的监听,当收到sentinel主从变更单数据后,对于该shard的连接资源信息进行更新
二、进行redis 操作的时候
1、先根据key判断路由到哪个shard
2、然后根据读写策略从该shard中找到对应的主机或者丛机的连接资源
3、最后进行操作
4、操作完后归还redis操作的连接资源