From 18f1875e248936c2983b732804fd015f0461d05a Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 26 Dec 2011 13:42:33 +0800 Subject: [PATCH] ha --- .../pool/ha/balance/AbstractBalancer.java | 18 +++++++++++++++ .../druid/pool/ha/balance/Balancer.java | 3 ++- .../ha/balance/LeastConnectionBalancer.java | 22 +++++++++++++++++++ .../pool/ha/balance/RoundRobinBlancer.java | 3 ++- .../druid/pool/ha/balance/WeightBalancer.java | 3 ++- 5 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/alibaba/druid/pool/ha/balance/AbstractBalancer.java create mode 100644 src/main/java/com/alibaba/druid/pool/ha/balance/LeastConnectionBalancer.java diff --git a/src/main/java/com/alibaba/druid/pool/ha/balance/AbstractBalancer.java b/src/main/java/com/alibaba/druid/pool/ha/balance/AbstractBalancer.java new file mode 100644 index 0000000000..63e4a1f6ba --- /dev/null +++ b/src/main/java/com/alibaba/druid/pool/ha/balance/AbstractBalancer.java @@ -0,0 +1,18 @@ +package com.alibaba.druid.pool.ha.balance; + +import com.alibaba.druid.pool.ha.MultiDataSource; + +public abstract class AbstractBalancer implements Balancer { + + private MultiDataSource multiDataSource; + + @Override + public void init(MultiDataSource multiDataSource) { + this.multiDataSource = multiDataSource; + } + + public MultiDataSource getMultiDataSource() { + return multiDataSource; + } + +} diff --git a/src/main/java/com/alibaba/druid/pool/ha/balance/Balancer.java b/src/main/java/com/alibaba/druid/pool/ha/balance/Balancer.java index 6b7bf18b12..1259534e09 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/balance/Balancer.java +++ b/src/main/java/com/alibaba/druid/pool/ha/balance/Balancer.java @@ -2,6 +2,7 @@ package com.alibaba.druid.pool.ha.balance; import java.sql.SQLException; +import com.alibaba.druid.pool.ha.DataSourceChangedEvent; import com.alibaba.druid.pool.ha.MultiConnectionHolder; import com.alibaba.druid.pool.ha.MultiDataSource; import com.alibaba.druid.pool.ha.MultiDataSourceConnection; @@ -10,7 +11,7 @@ public interface Balancer { void init(MultiDataSource dataSource); - void afterDataSourceChanged(Object event); + void afterDataSourceChanged(DataSourceChangedEvent event); MultiConnectionHolder getConnection(MultiDataSourceConnection connectionProxy, String sql) throws SQLException; } diff --git a/src/main/java/com/alibaba/druid/pool/ha/balance/LeastConnectionBalancer.java b/src/main/java/com/alibaba/druid/pool/ha/balance/LeastConnectionBalancer.java new file mode 100644 index 0000000000..248801d078 --- /dev/null +++ b/src/main/java/com/alibaba/druid/pool/ha/balance/LeastConnectionBalancer.java @@ -0,0 +1,22 @@ +package com.alibaba.druid.pool.ha.balance; + +import java.sql.SQLException; + +import com.alibaba.druid.pool.ha.DataSourceChangedEvent; +import com.alibaba.druid.pool.ha.MultiConnectionHolder; +import com.alibaba.druid.pool.ha.MultiDataSourceConnection; + +public class LeastConnectionBalancer extends AbstractBalancer { + + @Override + public void afterDataSourceChanged(DataSourceChangedEvent event) { + + } + + @Override + public MultiConnectionHolder getConnection(MultiDataSourceConnection connectionProxy, String sql) + throws SQLException { + return null; + } + +} diff --git a/src/main/java/com/alibaba/druid/pool/ha/balance/RoundRobinBlancer.java b/src/main/java/com/alibaba/druid/pool/ha/balance/RoundRobinBlancer.java index 6bd3e626e8..079dad8022 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/balance/RoundRobinBlancer.java +++ b/src/main/java/com/alibaba/druid/pool/ha/balance/RoundRobinBlancer.java @@ -5,6 +5,7 @@ import java.util.concurrent.atomic.AtomicInteger; import com.alibaba.druid.logging.Log; import com.alibaba.druid.logging.LogFactory; +import com.alibaba.druid.pool.ha.DataSourceChangedEvent; import com.alibaba.druid.pool.ha.DataSourceHolder; import com.alibaba.druid.pool.ha.MultiConnectionHolder; import com.alibaba.druid.pool.ha.MultiDataSource; @@ -22,7 +23,7 @@ public class RoundRobinBlancer implements Balancer { } - public void afterDataSourceChanged(Object event) { + public void afterDataSourceChanged(DataSourceChangedEvent event) { } diff --git a/src/main/java/com/alibaba/druid/pool/ha/balance/WeightBalancer.java b/src/main/java/com/alibaba/druid/pool/ha/balance/WeightBalancer.java index ca972f816b..a6edd90595 100644 --- a/src/main/java/com/alibaba/druid/pool/ha/balance/WeightBalancer.java +++ b/src/main/java/com/alibaba/druid/pool/ha/balance/WeightBalancer.java @@ -4,6 +4,7 @@ import java.sql.SQLException; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; +import com.alibaba.druid.pool.ha.DataSourceChangedEvent; import com.alibaba.druid.pool.ha.DataSourceHolder; import com.alibaba.druid.pool.ha.MultiConnectionHolder; import com.alibaba.druid.pool.ha.MultiDataSource; @@ -20,7 +21,7 @@ public class WeightBalancer implements Balancer { this.multiDataSource = multiDataSource; } - public void afterDataSourceChanged(Object event) { + public void afterDataSourceChanged(DataSourceChangedEvent event) { computeTotalWeight(); }