Class: LoadBalancer::RoundRobin

Inherits:
Algo
  • Object
show all
Defined in:
lib/multi_dbs_load_balancer/load_balancer/round_robin.rb

Instance Attribute Summary

Attributes inherited from Algo

#database_configs, #key, #redis

Instance Method Summary collapse

Methods inherited from Algo

#after_connected, #after_executed, #connected_to_next_db, #fail_over, #initialize

Methods included from Healthcheck

#db_available?, #mark_db_down, #mark_redis_down, #redis_available?

Methods included from RedisLua

eval_lua_script

Constructor Details

This class inherits a constructor from LoadBalancer::Algo

Instance Method Details

#next_db(**options) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/multi_dbs_load_balancer/load_balancer/round_robin.rb', line 11

def next_db(**options)
    @current = cas_current
    return @database_configs[@current], @current if db_available?(@current)
    
    next_dbs = (@current+1...@current+@database_configs.size).map { |i| i % @database_configs.size }
    fail_over(next_dbs)
end

#warm_upObject



7
8
9
# File 'lib/multi_dbs_load_balancer/load_balancer/round_robin.rb', line 7

def warm_up
    @@currents ||= ::Hash.new(0)
end