Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ops
/
monitor-service
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
qinchao
7 years ago
Commit
31f49ceff081dee817e85de6ef1fe78be339740b
1 parent
07e1edc4
切换lb改为异步
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
4 deletions
monitor-service-switch/src/main/java/com/monitor/switchs/NginxSwitchCtrl.java
monitor-service-switch/src/main/java/com/monitor/switchs/NginxSwitchCtrl.java
View file @
31f49ce
...
...
@@ -25,6 +25,9 @@ import java.io.File;
import
java.io.FileReader
;
import
java.io.IOException
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -38,6 +41,10 @@ public class NginxSwitchCtrl {
private
long
sleepTime
=
10
*
1000L
;
private
volatile
AtomicInteger
valueCount
=
new
AtomicInteger
(
1
);
private
Map
<
String
,
BaseResponse
>
switchLbResponseMap
=
new
ConcurrentHashMap
<>();
@Value
(
"${system.envi}"
)
private
String
env
;
...
...
@@ -45,6 +52,19 @@ public class NginxSwitchCtrl {
HostInfoMapper
hostInfoMapper
;
/**
* 切换lb结果查询
*/
@RequestMapping
(
value
=
"getLbSwitchResult"
)
@ResponseBody
public
BaseResponse
getLbSwitchResult
(
String
rtnID
)
{
Set
<
String
>
nowIDset
=
switchLbResponseMap
.
keySet
();
List
<
String
>
ids
=
Lists
.
newArrayList
(
rtnID
.
split
(
","
));
if
(
nowIDset
.
containsAll
(
ids
)){
return
new
BaseResponse
();
}
return
new
BaseResponse
(
201
,
"not finished"
);
}
/**
* 切换lb的权重
* cloudName 源lb
* target 目标nginx
...
...
@@ -71,19 +91,54 @@ public class NginxSwitchCtrl {
}
Map
<
String
,
List
<
String
>>
innerListenerMap
=
getLbListerner
(
true
);
Map
<
String
,
List
<
String
>>
outerListenerMap
=
getLbListerner
(
false
);
String
ts
=
String
.
valueOf
(
new
Date
().
getTime
());
String
rtnID
=
""
;
for
(
LbModel
lb:
lbList
){
if
(
rtnID
.
length
()>
0
){
rtnID
+=
","
;
}
rtnID
+=
(
ts
+
"-"
+
valueCount
.
getAndIncrement
());
//beginSwitchLb(rtnID,targetMap,lb,innerListenerMap,outerListenerMap);
startRunAsySwitchLb
(
rtnID
,
targetMap
,
lb
,
innerListenerMap
,
outerListenerMap
);
}
BaseResponse
response
=
new
BaseResponse
();
response
.
setData
(
rtnID
);
return
response
;
}
private
BaseResponse
beginSwitchLb
(
String
rtnID
,
Map
<
String
,
Integer
>
targetMap
,
LbModel
lb
,
Map
<
String
,
List
<
String
>>
innerListenerMap
,
Map
<
String
,
List
<
String
>>
outerListenerMap
){
logger
.
info
(
" beginSwitchLb lb {} ,rtnID {}"
,
lb
,
rtnID
);
BaseResponse
rtnBasResponse
=
null
;
try
{
if
(
lb
.
isClbFlag
()){
switchClb
(
targetMap
,
lb
);
rtnBasResponse
=
switchClb
(
targetMap
,
lb
);
}
else
{
Map
<
String
,
List
<
String
>>
listenerMap
=
outerListenerMap
;
if
(
lb
.
isInnerFlag
())
{
listenerMap
=
innerListenerMap
;
}
switchAlb
(
listenerMap
,
targetMap
,
lb
);
rtnBasResponse
=
switchAlb
(
listenerMap
,
targetMap
,
lb
);
}
}
catch
(
Exception
e
){
logger
.
error
(
"beginSwitchLb error {}"
,
e
);
}
return
new
BaseResponse
();
if
(
rtnBasResponse
==
null
){
rtnBasResponse
=
new
BaseResponse
(
201
,
"switch lb error"
);
}
switchLbResponseMap
.
put
(
rtnID
,
rtnBasResponse
);
return
rtnBasResponse
;
}
/**
* 发起异步调用
*/
private
void
startRunAsySwitchLb
(
String
rtnID
,
Map
<
String
,
Integer
>
targetMap
,
LbModel
lb
,
Map
<
String
,
List
<
String
>>
innerListenerMap
,
Map
<
String
,
List
<
String
>>
outerListenerMap
){
CompletableFuture
.
runAsync
(
new
Runnable
()
{
@Override
public
void
run
()
{
beginSwitchLb
(
rtnID
,
targetMap
,
lb
,
innerListenerMap
,
outerListenerMap
);
}
});
}
/**
...
...
Please
register
or
login
to post a comment