Skip to content

Commit 01153f8

Browse files
committed
ribbon loadbalancer optimisation
1 parent 138b581 commit 01153f8

7 files changed

Lines changed: 22 additions & 44 deletions

File tree

transaction-springcloud/src/main/java/com/codingapi/ribbon/loadbalancer/LcnLoadBalancerRule.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
import com.codingapi.tx.aop.bean.TxTransactionLocal;
88
import com.netflix.loadbalancer.Server;
99

10+
/**
11+
* created by foxdd 2017-12-05
12+
*/
1013
public class LcnLoadBalancerRule {
1114

1215
private Logger logger = LoggerFactory.getLogger(LcnLoadBalancerRule.class);
@@ -29,7 +32,6 @@ public Server proxy(Server server){
2932
if(cachedServer == null){
3033
logger.info("The server of key:" + key + " has not been cached yet!");
3134
Constants.cacheModelInfo.put(key, server);
32-
txTransactionLocal.getCachedModelList().add(key);
3335
return server;
3436
} else{
3537
logger.info("The cached server info, host:" + cachedServer.getHost() + ", port:" + cachedServer.getPort());

transaction-springcloud/src/main/java/com/codingapi/ribbon/loadbalancer/LcnNoOpLoadBalancerProxy.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import com.netflix.loadbalancer.NoOpLoadBalancer;
77
import com.netflix.loadbalancer.Server;
88

9+
/**
10+
* created by foxdd 2017-12-05
11+
*/
912
public class LcnNoOpLoadBalancerProxy extends NoOpLoadBalancer {
1013

1114
private Logger logger = LoggerFactory.getLogger(LcnNoOpLoadBalancerProxy.class);

transaction-springcloud/src/main/java/com/codingapi/ribbon/loadbalancer/LcnRibbonConfiguration.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@
1515
@Configuration
1616
public class LcnRibbonConfiguration {
1717

18+
/**
19+
* 为ribbon的loadbalancer做代理,相比于重写IRULE,重写loadbalancer更有利于用户自选LB算法,而且有默认LB算法可用
20+
* @param config
21+
* @param serverList
22+
* @param serverListFilter
23+
* @param rule
24+
* @param ping
25+
* @param serverListUpdater
26+
* @return
27+
*/
1828
@Bean
1929
public ILoadBalancer ribbonLoadBalancer(IClientConfig config,
2030
ServerList<Server> serverList, ServerListFilter<Server> serverListFilter,

transaction-springcloud/src/main/java/com/codingapi/ribbon/loadbalancer/LcnZoneAwareLoadBalancerProxy.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
import com.netflix.loadbalancer.ServerListUpdater;
1313
import com.netflix.loadbalancer.ZoneAwareLoadBalancer;
1414

15+
/**
16+
* created by foxdd 2017-12-05
17+
*/
1518
public class LcnZoneAwareLoadBalancerProxy<T extends Server> extends ZoneAwareLoadBalancer<T> {
1619

1720
private Logger logger = LoggerFactory.getLogger(LcnZoneAwareLoadBalancerProxy.class);

tx-client/src/main/java/com/codingapi/tx/aop/bean/TxTransactionLocal.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
package com.codingapi.tx.aop.bean;
22

3-
import java.util.ArrayList;
4-
import java.util.List;
5-
6-
import org.springframework.transaction.annotation.Transactional;
73
import com.alibaba.fastjson.JSONObject;
84
import com.codingapi.tx.framework.utils.SocketManager;
95
import com.codingapi.tx.model.Request;
@@ -35,6 +31,9 @@ public class TxTransactionLocal {
3531
*/
3632
private boolean hasIsGroup = false;
3733

34+
/**
35+
* 是否是发起方模块
36+
*/
3837
private boolean hasStart = false;
3938

4039
/**
@@ -48,7 +47,6 @@ public class TxTransactionLocal {
4847
private String type;
4948

5049
private boolean readOnly = false;
51-
private List<String> cachedModelList = new ArrayList<String>();
5250

5351
public boolean isHasIsGroup() {
5452
return hasIsGroup;
@@ -159,12 +157,4 @@ public void setReadOnly(boolean readOnly) {
159157
this.readOnly = readOnly;
160158
}
161159

162-
public List<String> getCachedModelList(){
163-
return cachedModelList;
164-
}
165-
166-
public void setCachedModelList(List<String> cachedModelList){
167-
this.cachedModelList = cachedModelList;
168-
}
169-
170160
}

tx-client/src/main/java/com/codingapi/tx/aop/service/impl/TxStartTransactionServerImpl.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.codingapi.tx.aop.service.impl;
22

3-
import com.alibaba.fastjson.JSONObject;
43
import com.codingapi.tx.Constants;
54
import com.codingapi.tx.aop.bean.TxCompensateLocal;
65
import com.codingapi.tx.aop.bean.TxTransactionInfo;
@@ -12,9 +11,6 @@
1211
import com.codingapi.tx.model.TxGroup;
1312
import com.codingapi.tx.netty.service.MQTxManagerService;
1413
import com.lorne.core.framework.exception.ServiceException;
15-
16-
import java.util.List;
17-
1814
import com.lorne.core.framework.utils.KidUtils;
1915
import com.lorne.core.framework.utils.task.ConditionUtils;
2016
import com.lorne.core.framework.utils.task.Task;
@@ -74,17 +70,6 @@ public Object execute(ProceedingJoinPoint point,final TxTransactionInfo info) th
7470
throw e;
7571
} finally {
7672

77-
TxTransactionLocal txTransactionLocal = TxTransactionLocal.current();
78-
79-
List<String> keyList = txTransactionLocal.getCachedModelList();
80-
81-
System.out.println("delete the complete cached list:" + JSONObject.toJSONString(keyList) + ", groupId:" + groupId);
82-
83-
for(String key:keyList){
84-
Constants.cacheModelInfo.remove(key);
85-
}
86-
87-
long end = System.currentTimeMillis();
8873
final int resState = state;
8974
final String type = txTransactionLocal.getType();
9075

tx-plugins-db/src/main/java/com/codingapi/tx/datasource/relational/LCNDBConnection.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package com.codingapi.tx.datasource.relational;
22

3-
import com.codingapi.tx.datasource.ICallClose;
4-
import com.alibaba.fastjson.JSONObject;
5-
import com.codingapi.tx.Constants;
63
import com.codingapi.tx.aop.bean.TxTransactionLocal;
74
import com.codingapi.tx.datasource.ICallClose;
85
import com.codingapi.tx.datasource.ILCNResource;
@@ -14,7 +11,6 @@
1411
import org.slf4j.LoggerFactory;
1512

1613
import java.sql.*;
17-
import java.util.List;
1814
import java.util.Map;
1915
import java.util.Properties;
2016
import java.util.Timer;
@@ -47,20 +43,15 @@ public class LCNDBConnection extends AbstractTransactionThread implements Connec
4743

4844
private TxTask waitTask;
4945

50-
private List<String> cachedModelList;
51-
5246

5347
public LCNDBConnection(Connection connection, DataSourceService dataSourceService, ICallClose<ILCNResource> runnable) {
5448
logger.info("init lcn connection ! ");
55-
public LCNDBConnection(Connection connection, DataSourceService dataSourceService, TxTransactionLocal transactionLocal, ICallClose<LCNDBConnection> runnable) {
56-
logger.info("init lcn connection ! ");
5749
this.connection = connection;
5850
this.runnable = runnable;
5951
this.dataSourceService = dataSourceService;
6052
TxTransactionLocal transactionLocal = TxTransactionLocal.current();
6153
groupId = transactionLocal.getGroupId();
6254
maxOutTime = transactionLocal.getMaxTimeOut();
63-
cachedModelList = transactionLocal.getCachedModelList();
6455

6556

6657
TaskGroup taskGroup = TaskGroupManager.getInstance().createTask(transactionLocal.getKid(),transactionLocal.getType());
@@ -168,12 +159,6 @@ public void run() {
168159

169160
System.out.println("lcn transaction over, res -> groupId:"+getGroupId()+" and state is "+rs+", about state (1:commit 0:rollback -1:network error -2:network time out)");
170161

171-
System.out.println("delete the completed cached list:" + JSONObject.toJSONString(cachedModelList) + ", groupId:" + getGroupId());
172-
173-
for(String key : cachedModelList){
174-
Constants.cacheModelInfo.remove(key);
175-
}
176-
177162
if (rs == 1) {
178163
connection.commit();
179164
} else {

0 commit comments

Comments
 (0)