Redis哨兵原理总结(四):源码分析

本文深入探讨了Redis Sentinel系统,重点关注其解决了哪些问题、如何运作、如何使用,以及Java中操作Sentinel的原理。文章详细分析了JedisSentinelPool的构造函数和初始化过程,介绍了哨兵的监听器以及订阅发布机制,强调了+switch-master事件在故障转移中的作用。
摘要由CSDN通过智能技术生成

目录

 

本博文主要总结关于哨兵的一些理论知识,主要关注点有一下几个方面:

一、哨兵解决了什么问题?

二、哨兵是如何解决“问题一”的?

三、如何使用哨兵?

四、Redis Sentinel客户端实现的原理是什么?Java如何操作Redis Sentinel?

四、Redis Sentinel客户端实现的原理是什么?Java如何操作Redis Sentinel?

首先,看JedisSentinelPool的构造函数。



Jedis Version:2.9.0

sentinel构造函数:

/**
  *Set<String> sentinels:哨兵集合,格式为IP:PORT
  */
public JedisSentinelPool(String masterName, Set<String> sentinels, GenericObjectPoolConfig poolConfig, int timeout, String password) {
	this(masterName, sentinels, poolConfig, timeout, password, 0);
}
	
	
public JedisSentinelPool(String masterName, Set<String> sentinels, GenericObjectPoolConfig poolConfig, int connectionTimeout, int soTimeout, String password, int database, String clientName) {
	this.connectionTimeout = 2000;
	this.soTimeout = 2000;
	this.database = 0;
	this.masterListeners = new HashSet();
	this.log = Logger.getLogger(this.getClass().getName());
	this.poolConfig = poolConfig;
	this.connectionTimeout = connectionTimeout;
	this.soTimeout = soTimeout;
	this.password = password;
	this.database = database;
	this.clientName = clientName;
	HostAndPort master = this.initSentinels(sentinels, masterName);
	this.initPool(master);
}

 再看,如何初始化哨兵的,initSentinels(sentinels, masterName)。

private HostAndPort initSentinels(Set<String> sentinels, String masterName) {
	HostAndPort master = null;
	boolean sentinelAvailable = false;
	this.log.info("Trying to find master from available Sentinels...");
	Iterator var5 = sentinels.iterator();

	String sentinel;
	HostAndPort hap;
	while(var5.hasNext()) {
		sentinel = (String)var5.next();
		hap = HostAndPort.parseString(sentinel);
		this.log.fine("Connecting to Sentinel " + hap);
		Jedis jedis = null;

		try {
			jedis = new J
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值