16
16
*/
17
17
package com .alipay .lookout .remote .report ;
18
18
19
+ import com .google .common .base .Splitter ;
19
20
import com .google .common .base .Strings ;
21
+ import com .google .common .collect .Lists ;
22
+
23
+ import java .util .ArrayList ;
24
+ import java .util .List ;
20
25
21
26
/**
22
27
* 默认静态地址服务
23
28
* with vip and test model url
24
29
* Created by [email protected] on 2017/5/31.
25
30
*/
26
31
public class DefaultAddressService implements AddressService {
27
-
28
- private Address agentServerVip ;
29
- private Address agentTestUrl ;
32
+ private Address agentTestUrl ;
33
+ private List <Address > addressList ;
30
34
31
35
public DefaultAddressService () {
32
36
}
@@ -35,7 +39,6 @@ public DefaultAddressService(String appName) {
35
39
}
36
40
37
41
// cache,for a connection keep alive & reuse;
38
-
39
42
public void clearAddressCache () {
40
43
}
41
44
@@ -46,21 +49,55 @@ public void setAgentTestUrl(String agentTestUrl) {
46
49
}
47
50
48
51
public void setAgentServerVip (String agentServerVip ) {
49
- if (!Strings .isNullOrEmpty (agentServerVip )) {
50
- this .agentServerVip = new Address (agentServerVip );
52
+ if (Strings .isNullOrEmpty (agentServerVip )) {
53
+ return ;
54
+ }
55
+ //multi addresses
56
+ if (agentServerVip .contains ("," )) {
57
+ List <String > agentServers = Splitter .on (',' ).splitToList (agentServerVip );
58
+ setAddressList (agentServers );
59
+ return ;
60
+ }
61
+ this .addressList = Lists .newArrayList (new Address (agentServerVip ));
62
+ }
63
+
64
+ public void setAddressList (List <String > addresses ) {
65
+ if (addresses == null || addresses .isEmpty ()) {
66
+ return ;
51
67
}
68
+ List <Address > addressList = new ArrayList <Address >();
69
+ for (String addressStr : addresses ) {
70
+ addressList .add (new Address (addressStr .trim ()));
71
+ }
72
+ this .addressList = addressList ;
73
+ }
74
+
75
+ protected Address getAgentTestUrl () {
76
+ return agentTestUrl ;
77
+ }
78
+
79
+ protected List <Address > getAddressList () {
80
+ return addressList ;
52
81
}
53
82
54
83
@ Override
55
84
public boolean isAgentServerExisted () {
56
- return agentTestUrl != null || agentServerVip != null ;
85
+ return agentTestUrl != null || ( addressList != null && ! addressList . isEmpty ()) ;
57
86
}
58
87
59
88
@ Override
60
89
public Address getAgentServerHost () {
61
90
if (agentTestUrl != null ) {
62
91
return agentTestUrl ;
63
92
}
64
- return agentServerVip ;
93
+ List <Address > addrList = addressList ;
94
+ if (addrList == null ) {
95
+ return null ;
96
+ }
97
+ if (addrList .size () == 1 ) {
98
+ return addrList .get (0 );
99
+ }
100
+ int randomNodeIdx = randomThreadLocal .get ().nextInt (addrList .size ());
101
+ return addrList .get (randomNodeIdx );
65
102
}
66
103
}
0 commit comments