Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
byit-myth-job
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liyuan
byit-myth-job
Commits
682a0e40
Commit
682a0e40
authored
Nov 28, 2019
by
huangfusuper
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加管理服务根据路由策略选取服务,并执行调度
parent
0942268b
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
130 additions
and
32 deletions
+130
-32
pom.xml
byit-myth-core/myth-admin-core/pom.xml
+2
-13
JavaBeanJobTask.java
...min-core/src/main/java/com/byit/task/JavaBeanJobTask.java
+19
-2
pom.xml
byit-myth-core/myth-core-common/pom.xml
+11
-0
PluginEnum.java
...n/src/main/java/com/byit/job/enums/plugin/PluginEnum.java
+2
-2
JavaBeanJobInfo.java
...mon/src/main/java/com/byit/job/model/JavaBeanJobInfo.java
+9
-3
ReturnResult.java
...common/src/main/java/com/byit/job/model/ReturnResult.java
+1
-0
IpUtil.java
...-core-common/src/main/java/com/byit/job/utils/IpUtil.java
+69
-0
RunJobServerHandler.java
...lugin/src/main/java/com/byit/rpc/RunJobServerHandler.java
+16
-9
pom.xml
byit-myth-gateway/pom.xml
+0
-1
pom.xml
byit-myth-rpc/pom.xml
+0
-1
Mains.java
...nt/byit-demo-client/src/main/java/com/byit/job/Mains.java
+1
-1
No files found.
byit-myth-core/myth-admin-core/pom.xml
View file @
682a0e40
...
@@ -19,15 +19,6 @@
...
@@ -19,15 +19,6 @@
<artifactId>
netty-all
</artifactId>
<artifactId>
netty-all
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
myth-job
</groupId>
<artifactId>
myth-executor-core
</artifactId>
</dependency>
<dependency>
<groupId>
myth-job
</groupId>
<artifactId>
byit-myth-rpc
</artifactId>
</dependency>
<dependency>
<dependency>
<groupId>
myth-job
</groupId>
<groupId>
myth-job
</groupId>
...
@@ -39,10 +30,7 @@
...
@@ -39,10 +30,7 @@
<artifactId>
myth-core-common
</artifactId>
<artifactId>
myth-core-common
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
\ No newline at end of file
byit-myth-core/myth-admin-core/src/main/java/com/byit/task/JavaBeanJobTask.java
View file @
682a0e40
...
@@ -3,9 +3,14 @@ package com.byit.task;
...
@@ -3,9 +3,14 @@ package com.byit.task;
import
cn.hutool.http.HttpUtil
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.byit.job.exceptions.plugin.PluginException
;
import
com.byit.job.model.JavaBeanJobInfo
;
import
com.byit.job.model.JavaBeanJobInfo
;
import
com.byit.job.utils.IpUtil
;
import
com.byit.rpc.remoting.invoker.route.LoadBalance
;
import
com.byit.rpc.remoting.invoker.route.RpcLoadBalance
;
import
io.netty.util.Timeout
;
import
io.netty.util.Timeout
;
import
io.netty.util.TimerTask
;
import
io.netty.util.TimerTask
;
import
lombok.extern.slf4j.Slf4j
;
/**
/**
* @program: byit-myth-job->JvavBeanJobTask
* @program: byit-myth-job->JvavBeanJobTask
...
@@ -13,6 +18,7 @@ import io.netty.util.TimerTask;
...
@@ -13,6 +18,7 @@ import io.netty.util.TimerTask;
* @author: huangfu
* @author: huangfu
* @date: 2019/11/20 15:08
* @date: 2019/11/20 15:08
**/
**/
@Slf4j
public
class
JavaBeanJobTask
implements
TimerTask
{
public
class
JavaBeanJobTask
implements
TimerTask
{
private
JavaBeanJobInfo
javaBeanJobInfo
;
private
JavaBeanJobInfo
javaBeanJobInfo
;
...
@@ -21,8 +27,11 @@ public class JavaBeanJobTask implements TimerTask {
...
@@ -21,8 +27,11 @@ public class JavaBeanJobTask implements TimerTask {
}
}
@Override
@Override
public
void
run
(
Timeout
timeout
)
throws
Exception
{
public
void
run
(
Timeout
timeout
)
{
String
url
=
javaBeanJobInfo
.
getUrl
(
);
//根据负责均衡方案获取对应IP
RpcLoadBalance
rpcInvokerRouter
=
LoadBalance
.
match
(
javaBeanJobInfo
.
getRoutingStrategy
(
),
LoadBalance
.
ROUND
).
rpcInvokerRouter
;
try
{
String
url
=
IpUtil
.
electiveUrl
(
javaBeanJobInfo
.
getUrl
(
),
rpcInvokerRouter
);
String
jobHandelName
=
javaBeanJobInfo
.
getJobHandelName
(
);
String
jobHandelName
=
javaBeanJobInfo
.
getJobHandelName
(
);
String
param
=
javaBeanJobInfo
.
getParam
(
);
String
param
=
javaBeanJobInfo
.
getParam
(
);
...
@@ -30,5 +39,13 @@ public class JavaBeanJobTask implements TimerTask {
...
@@ -30,5 +39,13 @@ public class JavaBeanJobTask implements TimerTask {
jsonObject
.
put
(
"jobHandelName"
,
jobHandelName
);
jsonObject
.
put
(
"jobHandelName"
,
jobHandelName
);
jsonObject
.
put
(
"param"
,
param
);
jsonObject
.
put
(
"param"
,
param
);
String
result
=
HttpUtil
.
post
(
url
,
JSON
.
toJSONString
(
jsonObject
),
10
*
1000
);
String
result
=
HttpUtil
.
post
(
url
,
JSON
.
toJSONString
(
jsonObject
),
10
*
1000
);
log
.
info
(
"---------------{}------------"
,
result
);
}
catch
(
PluginException
ignored
){
log
.
error
(
"--------------------{},{}-----------------"
,
ignored
.
getIEnum
().
getCode
(),
ignored
.
getIEnum
().
getMsg
());
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
}
}
}
}
byit-myth-core/myth-core-common/pom.xml
View file @
682a0e40
...
@@ -31,6 +31,16 @@
...
@@ -31,6 +31,16 @@
<artifactId>
hutool-all
</artifactId>
<artifactId>
hutool-all
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
<dependency>
<groupId>
myth-job
</groupId>
<artifactId>
byit-myth-rpc
</artifactId>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
\ No newline at end of file
byit-myth-core/myth-core-common/src/main/java/com/byit/job/enums/plugin/PluginEnum.java
View file @
682a0e40
...
@@ -8,8 +8,8 @@ import com.byit.job.enums.IEnum;
...
@@ -8,8 +8,8 @@ import com.byit.job.enums.IEnum;
*/
*/
public
enum
PluginEnum
implements
IEnum
{
public
enum
PluginEnum
implements
IEnum
{
REQUEST_PORT_OR_IP_IS_MISSING
(
"请求ip或者port为null"
,
10000
)
;
REQUEST_PORT_OR_IP_IS_MISSING
(
"请求ip或者port为null"
,
10000
)
,
NO_SERVICE_AVAILABLE
(
"无可用的服务"
,
11000
);
private
String
msg
;
private
String
msg
;
private
int
code
;
private
int
code
;
...
...
byit-myth-core/myth-core-common/src/main/java/com/byit/job/model/JavaBeanJobInfo.java
View file @
682a0e40
...
@@ -40,14 +40,20 @@ public class JavaBeanJobInfo {
...
@@ -40,14 +40,20 @@ public class JavaBeanJobInfo {
*/
*/
private
String
gatewayToken
;
private
String
gatewayToken
;
/**
/**
* 添加任务的
地址
* 添加任务的
IP
*/
*/
private
String
requestIP
;
private
String
requestIP
;
/**
* 添加任务的port
*/
private
String
requestPort
;
private
String
requestPort
;
/**
* 添加任务的参数
*/
private
String
param
;
private
String
param
;
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
return
"JavaBeanJobInfo{"
+
return
"JavaBeanJobInfo{"
+
...
...
byit-myth-core/myth-core-common/src/main/java/com/byit/job/model/ReturnResult.java
View file @
682a0e40
...
@@ -41,6 +41,7 @@ public class ReturnResult<T> implements Serializable {
...
@@ -41,6 +41,7 @@ public class ReturnResult<T> implements Serializable {
*/
*/
public
ReturnResult
(
T
content
)
{
public
ReturnResult
(
T
content
)
{
this
.
code
=
JobResultEnum
.
SUCCESS
.
getCode
();
this
.
code
=
JobResultEnum
.
SUCCESS
.
getCode
();
this
.
msg
=
JobResultEnum
.
SUCCESS
.
getMsg
();
this
.
content
=
content
;
this
.
content
=
content
;
}
}
}
}
byit-myth-core/myth-core-common/src/main/java/com/byit/job/utils/IpUtil.java
0 → 100644
View file @
682a0e40
package
com
.
byit
.
job
.
utils
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.byit.job.enums.plugin.PluginEnum
;
import
com.byit.job.exceptions.plugin.PluginException
;
import
com.byit.rpc.remoting.invoker.route.RpcLoadBalance
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.Arrays
;
import
java.util.Collections
;
import
java.util.TreeSet
;
/**
* @program: byit-myth-job->IpUtil
* @description: IP相关工具类
* @author: huangfu
* @date: 2019/11/28 13:48
**/
@Slf4j
public
class
IpUtil
{
/**
* 存活测试
* @param url 测试url
* @return return
*/
public
static
boolean
survivalTest
(
String
url
){
try
{
log
.
info
(
"------------------开始发送心跳包--------------------"
);
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"heartbeat"
,
"PENG"
);
String
heartbeatRes
=
HttpUtil
.
post
(
url
,
JSON
.
toJSONString
(
jsonObject
),
2
*
1000
);
log
.
info
(
"------------------接收心跳包--------------------"
);
return
"PONG"
.
equals
(
heartbeatRes
);
}
catch
(
Exception
e
){
log
.
error
(
"--------------------{},服务不可用------------------"
,
url
);
return
false
;
}
}
/**
* 根据路由策略选择地址
* @param urlsStr
* @param rpcLoadBalance
* @return
*/
public
static
String
electiveUrl
(
String
urlsStr
,
RpcLoadBalance
rpcLoadBalance
)
throws
PluginException
{
log
.
info
(
"-----------------开始根据路由规则选取服务地址--------------------"
);
String
[]
urls
=
urlsStr
.
split
(
","
);
TreeSet
<
String
>
treeSet
=
new
TreeSet
<>(
Arrays
.
asList
(
urls
));
boolean
flag
=
false
;
String
electiveIp
=
""
;
while
(!
flag
){
if
(
CollectionUtil
.
isEmpty
(
treeSet
))
{
throw
new
PluginException
(
PluginEnum
.
NO_SERVICE_AVAILABLE
);
}
electiveIp
=
rpcLoadBalance
.
route
(
"PLUGIN-SERVER"
,
treeSet
);
//删除这个IP
treeSet
.
remove
(
electiveIp
);
flag
=
survivalTest
(
electiveIp
);
}
return
electiveIp
;
}
}
byit-myth-executor/myth-exector-plugin/src/main/java/com/byit/rpc/RunJobServerHandler.java
View file @
682a0e40
...
@@ -12,6 +12,7 @@ import io.netty.channel.SimpleChannelInboundHandler;
...
@@ -12,6 +12,7 @@ import io.netty.channel.SimpleChannelInboundHandler;
import
io.netty.handler.codec.http.*
;
import
io.netty.handler.codec.http.*
;
import
io.netty.util.CharsetUtil
;
import
io.netty.util.CharsetUtil
;
import
io.netty.util.internal.StringUtil
;
import
io.netty.util.internal.StringUtil
;
import
lombok.extern.slf4j.Slf4j
;
/**
/**
* @program: byit-myth-job->RunJobServer
* @program: byit-myth-job->RunJobServer
...
@@ -19,28 +20,38 @@ import io.netty.util.internal.StringUtil;
...
@@ -19,28 +20,38 @@ import io.netty.util.internal.StringUtil;
* @author: huangfu
* @author: huangfu
* @date: 2019/11/18 16:33
* @date: 2019/11/18 16:33
**/
**/
@Slf4j
public
class
RunJobServerHandler
extends
SimpleChannelInboundHandler
<
FullHttpRequest
>
{
public
class
RunJobServerHandler
extends
SimpleChannelInboundHandler
<
FullHttpRequest
>
{
private
static
final
String
PENG
=
"PENG"
;
private
static
final
String
PONG
=
"PONG"
;
@Override
@Override
protected
void
channelRead0
(
ChannelHandlerContext
ctx
,
FullHttpRequest
req
)
throws
Exception
{
protected
void
channelRead0
(
ChannelHandlerContext
ctx
,
FullHttpRequest
req
)
throws
Exception
{
String
responseBody
=
""
;
if
(
req
instanceof
HttpRequest
){
if
(
req
instanceof
HttpRequest
){
JSONObject
jsonObject
=
analysisParam
(
req
.
content
(
));
JSONObject
jsonObject
=
analysisParam
(
req
.
content
(
));
if
(
null
==
jsonObject
){
if
(
null
==
jsonObject
){
throw
new
Exception
(
"核心参数 为 null"
);
throw
new
Exception
(
"核心参数 为 null"
);
}
}
//检测是否有心跳参数,有心跳参数则为测试参数,且为PENG的话,服务端回复 PONG
String
heartbeat
=
(
String
)(
jsonObject
.
get
(
"heartbeat"
));
if
(
null
==
heartbeat
){
String
jobHandelName
=
((
String
)(
jsonObject
.
get
(
"jobHandelName"
)));
String
jobHandelName
=
((
String
)(
jsonObject
.
get
(
"jobHandelName"
)));
String
param
=
((
String
)(
jsonObject
.
get
(
"param"
)));
String
param
=
((
String
)(
jsonObject
.
get
(
"param"
)));
if
(
StringUtil
.
isNullOrEmpty
(
jobHandelName
)){
if
(
StringUtil
.
isNullOrEmpty
(
jobHandelName
)){
throw
new
Exception
(
"jobHandelName 为 null"
);
throw
new
Exception
(
"jobHandelName 为 null"
);
}
}
ReturnResult
<
String
>
stringReturnResult
=
runJob
(
jobHandelName
,
param
);
ReturnResult
<
String
>
stringReturnResult
=
runJob
(
jobHandelName
,
param
);
assert
stringReturnResult
!=
null
;
System
.
out
.
println
(
"---------服务器端-------------"
+
stringReturnResult
.
getCode
());
responseBody
=
stringReturnResult
.
getMsg
();
log
.
info
(
"---------服务器端:{},{}-------------"
,
stringReturnResult
.
getCode
(),
stringReturnResult
.
getMsg
());
}
else
if
(
PENG
.
equals
(
heartbeat
)){
log
.
info
(
"----------调度平台心跳检测-------------"
);
responseBody
=
PONG
;
}
//----------------------------------消息发送-----------------------------------
//----------------------------------消息发送-----------------------------------
ByteBuf
byteBuf
=
Unpooled
.
copiedBuffer
(
"Hello World"
,
CharsetUtil
.
UTF_8
);
ByteBuf
byteBuf
=
Unpooled
.
copiedBuffer
(
responseBody
,
CharsetUtil
.
UTF_8
);
//HTTP响应
//HTTP响应
FullHttpResponse
response
=
new
DefaultFullHttpResponse
(
HttpVersion
.
HTTP_1_1
,
HttpResponseStatus
.
OK
,
byteBuf
);
FullHttpResponse
response
=
new
DefaultFullHttpResponse
(
HttpVersion
.
HTTP_1_1
,
HttpResponseStatus
.
OK
,
byteBuf
);
//设置头信息
//设置头信息
...
@@ -58,10 +69,6 @@ public class RunJobServerHandler extends SimpleChannelInboundHandler<FullHttpReq
...
@@ -58,10 +69,6 @@ public class RunJobServerHandler extends SimpleChannelInboundHandler<FullHttpReq
try
{
try
{
IJobHandler
iJobHandler
=
jobClass
.
newInstance
(
);
IJobHandler
iJobHandler
=
jobClass
.
newInstance
(
);
return
iJobHandler
.
execute
(
param
);
return
iJobHandler
.
execute
(
param
);
}
catch
(
InstantiationException
e
)
{
e
.
printStackTrace
(
);
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
(
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
e
.
printStackTrace
(
);
}
}
...
...
byit-myth-gateway/pom.xml
View file @
682a0e40
...
@@ -41,7 +41,6 @@
...
@@ -41,7 +41,6 @@
<dependency>
<dependency>
<groupId>
myth-job
</groupId>
<groupId>
myth-job
</groupId>
<artifactId>
byit-myth-rpc
</artifactId>
<artifactId>
byit-myth-rpc
</artifactId>
<version>
${project.version}
</version>
</dependency>
</dependency>
...
...
byit-myth-rpc/pom.xml
View file @
682a0e40
...
@@ -106,7 +106,6 @@
...
@@ -106,7 +106,6 @@
<scope>
provided
</scope>
<scope>
provided
</scope>
</dependency>
</dependency>
<!-- ********************** registry (default=xxl-registry) ********************** -->
<!-- ********************** registry (default=xxl-registry) ********************** -->
<!-- registry-client -->
<!-- registry-client -->
...
...
demo-client/byit-demo-client/src/main/java/com/byit/job/Mains.java
View file @
682a0e40
...
@@ -15,7 +15,7 @@ import java.io.IOException;
...
@@ -15,7 +15,7 @@ import java.io.IOException;
**/
**/
public
class
Mains
{
public
class
Mains
{
public
static
void
main
(
String
[]
args
)
throws
IOException
{
public
static
void
main
(
String
[]
args
)
throws
IOException
{
String
plServerUrl
=
"http://
localhost:9999
"
;
String
plServerUrl
=
"http://
127.0.0.1:9999,http://127.0.0.1:8888
"
;
String
mythCron
=
"时间"
;
String
mythCron
=
"时间"
;
String
routingStrategy
=
"路由策略"
;
String
routingStrategy
=
"路由策略"
;
String
blockingStrategy
=
"阻塞策略"
;
String
blockingStrategy
=
"阻塞策略"
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment