码迷,mamicode.com
首页 > 系统相关 > 详细

Jedis源码分析:JedisClusterInfoCache

时间:2019-08-20 15:19:06      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:tno   重置   流程   判断   ati   name   sof   must   gns   

JedisClusterInfoCache功能模块

方法名说明
集群发现及本地集群缓存信息  
public void discoverClusterNodesAndSlots(Jedis jedis) 通过cluster slots命令发现集群,将集群节点分别缓存到nodes和slots缓存对象中
private void discoverClusterSlots(Jedis jedis) 通过cluster slots命令发现集群,将集群节点缓存到slots缓存对象中
public void assignSlotsToNode(ListtargetSlots,HostAndPort targetNode) 从nodes对象中寻找匹配的master节点,并放入slots缓存对象中
public JedisPool setupNodeIfNotExist(HostAndPort node) 判断nodes缓存中是否存在该节点,如果存在,从nodes对象中取出该节点,如果不存在,则新生成JedisPool对象并放入nodes缓存中
public void assignSlotToNode(intslot,HostAndPort targetNode) 从nodes对象中寻找匹配的master节点,并放入slots缓存对象中
private List getAssignedSlotArray(List  slotInfo) 将槽区间转为槽列表
集群缓存信息刷新和重置  
public void renewClusterSlots(Jedis jedis) 刷新缓存信息
public void reset() 重置缓存,将nodes和slots缓存对象中的数据全部清空
缓存对象获取  
public JedisPool getNode(String nodeKey) 根据key(host:port)从nodes缓存中获取JedisPool对象
public JedisPool getSlotPool(int slot) 根据slots信息获取对应的master节点信息
public Map<String,JedisPool> getNodes() 获取nodes缓存
public List  getShuffledNodesPool() 将nodes中所有对象全部打乱重排并返回新的nodes缓存
辅助方法  
private HostAndPort generateHostAndPort(List hostInfos) 从槽信息对象中获取host和port,转换为HostAndPort对象
public static String getNodeKey(HostAndPort hnp) 获取HostAndPort中的host和port,拼接为host:port字符串
public static String getNodeKey(Client client) 从client对象中获取host和port,拼接为host:port字符串
public static String getNodeKey(Jedis jedis) 从Jedis对象中获取host和port,拼接为host:port字符串

集群发现:提供实例化的Jedis对象,通过"cluster slots"命令获取集群信息,转换为Java对象后,将主从节点信息全部存放至nodes缓存集合中,同时获取所有的槽位信息,将slot->master节点信息键值对存放至slots对象中,具体的流程如下所示。

  • discoverClusterNodesAndSlots(Jedis jedis)方法流程图

技术图片

  • discoverClusterSlots(Jedis jedis)方法流程图

技术图片

集群刷新和重置:在无法获取可用的Jedis连接对象时,会执行集群信息刷新操作.如果提供了可用的Jedis对象,那么会调用discoverClusterSlots()方法重新将新的集群信息放入nodes和slots缓存中。如果提供的参数为null值,那么首先会将nodes中的对象打散重排,然后遍历nodes,获取其中的JedisPool对象,最后调用discoverClusterSlots()方法重新将新的集群信息放入nodes和slots缓存。

  • renewClusterSlots(Jedis jedis)方法流程图

 技术图片

Jedis源码分析:JedisClusterInfoCache

标签:tno   重置   流程   判断   ati   name   sof   must   gns   

原文地址:https://www.cnblogs.com/zhengzuozhanglina/p/11383035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!