栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Resque故障转移Redis解决方案

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Resque故障转移Redis解决方案

我不这么认为。但是,您可以使用Apache
Zookeeper
轻松轻松地实现主选举机制:

require "rubygems"require "zookeeper"def log(msg)  puts "[#{Process.pid}] #{msg}"enddef debug(obj)  log(obj.inspect)enddef on_master_changed(&block)  loop do    wcb = Zookeeper::WatcherCallback.new    resp = @zookeeper.get_children(:path => @base_path, :watcher => wcb, :watcher_context => @base_path)    children = resp[:children].map{|name| "#{@base_path}/#{name}"}    new_master = children.sort.first    block.call(new_master)    while !wcb.completed?      sleep(0.1)    end  endend@zookeeper = Zookeeper.new("localhost:2181")if @zookeeper.state != Zookeeper::ZOO_CONNECTED_STATE  log 'Unable to connect to Zookeeper!'  exit(1)end@base_path = "/nodes"@zookeeper.create(:path => @base_path)resp = @zookeeper.create(:path => "#{@base_path}/node-", :ephemeral => true, :sequence => true, :data => Process.pid.to_s)my_node = resp[:path]is_master = falselog "My node is: #{my_node}"on_master_changed do |new_master|  if new_master == my_node    if is_master      log "I am still the master. Bow before me or die!"    else      log "I am the new master. Behold!"    end    is_master = true  else    pid = @zookeeper.get(:path => new_master)[:data]    log "New master is process #{pid}"  endend

您可以将上面的脚本修改为:

  1. 使用Redis服务器的IP /端口而不是进程的PID
  2. 将redis-cli与SLAVEOF命令一起使用可处理“成为主服务器”,“已更改主服务器”和“不再主服务器”方案。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/386008.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号