Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
javalover123888
SkyWalking
提交
e8fb8e34
S
SkyWalking
项目概览
javalover123888
/
SkyWalking
与 Fork 源项目一致
Fork自
山不在高_有仙则灵 / SkyWalking
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
SkyWalking
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e8fb8e34
编写于
2月 25, 2017
作者:
P
pengys5
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
actor
上级
bbc29d8b
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
191 addition
and
51 deletion
+191
-51
skywalking-collector/skywalking-collector-actor/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorker.java
.../com/a/eye/skywalking/collector/actor/AbstractWorker.java
+40
-0
skywalking-collector/skywalking-collector-actor/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorkerProvider.java
...ye/skywalking/collector/actor/AbstractWorkerProvider.java
+6
-7
skywalking-collector/skywalking-collector-actor/src/main/java/com/a/eye/skywalking/collector/actor/router/RandomRouter.java
...a/eye/skywalking/collector/actor/router/RandomRouter.java
+20
-0
skywalking-collector/skywalking-collector-actor/src/main/java/com/a/eye/skywalking/collector/actor/router/WorkerRouter.java
...a/eye/skywalking/collector/actor/router/WorkerRouter.java
+12
-0
skywalking-collector/skywalking-collector-actor/src/test/java/com/a/eye/skywalking/collector/actor/AbstractWorkerProviderTestCase.java
...lking/collector/actor/AbstractWorkerProviderTestCase.java
+55
-5
skywalking-collector/skywalking-collector-actor/src/test/java/com/a/eye/skywalking/collector/actor/SpiTestWorker.java
...a/com/a/eye/skywalking/collector/actor/SpiTestWorker.java
+12
-2
skywalking-collector/skywalking-collector-actor/src/test/java/com/a/eye/skywalking/collector/actor/SpiTestWorkerFactory.java
.../eye/skywalking/collector/actor/SpiTestWorkerFactory.java
+3
-3
skywalking-collector/skywalking-collector-actor/src/test/java/com/a/eye/skywalking/collector/actor/SpiTestWorkerFactoryTestCase.java
...walking/collector/actor/SpiTestWorkerFactoryTestCase.java
+10
-6
skywalking-collector/skywalking-collector-actor/src/test/java/com/a/eye/skywalking/collector/actor/WorkersCreatorTestCase.java
...ye/skywalking/collector/actor/WorkersCreatorTestCase.java
+9
-1
skywalking-collector/skywalking-collector-actor/src/test/resources/META-INF/services/com.a.eye.skywalking.collector.actor.AbstractWorkerProvider
...m.a.eye.skywalking.collector.actor.AbstractWorkerProvider
+0
-0
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/WorkerListenerMessage.java
...e/skywalking/collector/cluster/WorkerListenerMessage.java
+5
-5
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/WorkersListener.java
...m/a/eye/skywalking/collector/cluster/WorkersListener.java
+3
-1
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/WorkersRefCenter.java
.../a/eye/skywalking/collector/cluster/WorkersRefCenter.java
+12
-12
skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/CollectorBootStartUp.java
...eye/skywalking/collector/worker/CollectorBootStartUp.java
+0
-5
skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/metric/ApplicationDiscoerWorkerFactory.java
...lector/worker/metric/ApplicationDiscoerWorkerFactory.java
+1
-2
skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/metric/ApplicationDiscoverMetric.java
...ng/collector/worker/metric/ApplicationDiscoverMetric.java
+3
-2
未找到文件。
skywalking-collector/skywalking-collector-actor/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorker.java
浏览文件 @
e8fb8e34
package
com.a.eye.skywalking.collector.actor
;
import
akka.actor.UntypedActor
;
import
akka.cluster.ClusterEvent
;
import
akka.cluster.Member
;
import
akka.cluster.MemberStatus
;
import
com.a.eye.skywalking.collector.actor.router.WorkerRouter
;
import
com.a.eye.skywalking.collector.cluster.WorkerListenerMessage
;
import
com.a.eye.skywalking.collector.cluster.WorkersListener
;
/**
* @author pengys5
*/
public
abstract
class
AbstractWorker
extends
UntypedActor
{
final
String
workerRole
;
public
AbstractWorker
(
String
workerRole
)
{
this
.
workerRole
=
workerRole
;
}
public
abstract
void
receive
(
Object
message
);
@Override
public
void
onReceive
(
Object
message
)
throws
Throwable
{
if
(
message
instanceof
ClusterEvent
.
CurrentClusterState
)
{
ClusterEvent
.
CurrentClusterState
state
=
(
ClusterEvent
.
CurrentClusterState
)
message
;
for
(
Member
member
:
state
.
getMembers
())
{
if
(
member
.
status
().
equals
(
MemberStatus
.
up
()))
{
register
(
member
);
}
}
}
else
if
(
message
instanceof
ClusterEvent
.
MemberUp
)
{
ClusterEvent
.
MemberUp
memberUp
=
(
ClusterEvent
.
MemberUp
)
message
;
register
(
memberUp
.
member
());
}
else
{
receive
(
message
);
}
}
public
void
tell
(
String
workerRole
,
WorkerRouter
router
,
Object
message
)
throws
Throwable
{
router
.
find
(
workerRole
).
tell
(
message
,
getSelf
());
}
void
register
(
Member
member
)
{
WorkerListenerMessage
.
RegisterMessage
registerMessage
=
new
WorkerListenerMessage
.
RegisterMessage
(
workerRole
);
getContext
().
actorSelection
(
member
.
address
()
+
"/user/"
+
WorkersListener
.
WorkName
).
tell
(
registerMessage
,
getSelf
());
}
}
skywalking-collector/skywalking-collector-actor/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorkerProvider.java
浏览文件 @
e8fb8e34
...
...
@@ -9,26 +9,25 @@ import com.a.eye.skywalking.api.util.StringUtil;
*/
public
abstract
class
AbstractWorkerProvider
{
public
abstract
String
worker
Nam
e
();
public
abstract
String
worker
Rol
e
();
public
abstract
Class
workerClass
();
public
abstract
int
workerNum
();
public
void
createWorker
(
ActorSystem
system
)
{
System
.
out
.
println
(
"workerName: "
+
workerName
());
if
(
StringUtil
.
isEmpty
(
workerName
()))
{
throw
new
IllegalArgumentException
(
"cannot createWorker() with anything not obtained from workerName()"
);
if
(
StringUtil
.
isEmpty
(
workerRole
()))
{
throw
new
IllegalArgumentException
(
"cannot createWorker() with nothing obtained from workerRole()"
);
}
if
(
workerClass
()
==
null
)
{
throw
new
IllegalArgumentException
(
"cannot createWorker() with
anything not
obtained from workerClass()"
);
throw
new
IllegalArgumentException
(
"cannot createWorker() with
nothing
obtained from workerClass()"
);
}
if
(
workerNum
()
<=
0
)
{
throw
new
IllegalArgumentException
(
"cannot
workerNum
() with obtained from workerNum() must greater than 0"
);
throw
new
IllegalArgumentException
(
"cannot
createWorker
() with obtained from workerNum() must greater than 0"
);
}
for
(
int
i
=
1
;
i
<=
workerNum
();
i
++)
{
system
.
actorOf
(
Props
.
create
(
workerClass
()
),
workerNam
e
()
+
"_"
+
i
);
system
.
actorOf
(
Props
.
create
(
workerClass
()
,
workerRole
()),
workerRol
e
()
+
"_"
+
i
);
}
}
}
skywalking-collector/skywalking-collector-actor/src/main/java/com/a/eye/skywalking/collector/actor/router/RandomRouter.java
0 → 100644
浏览文件 @
e8fb8e34
package
com.a.eye.skywalking.collector.actor.router
;
import
akka.actor.ActorRef
;
import
com.a.eye.skywalking.collector.cluster.WorkersRefCenter
;
import
java.util.List
;
import
java.util.Random
;
/**
* @author pengys5
*/
public
class
RandomRouter
implements
WorkerRouter
{
@Override
public
ActorRef
find
(
String
workerRole
)
{
int
workerNum
=
WorkersRefCenter
.
INSTANCE
.
sizeOf
(
workerRole
);
Random
random
=
new
Random
(
workerNum
);
return
WorkersRefCenter
.
INSTANCE
.
find
(
workerRole
,
random
.
nextInt
());
}
}
skywalking-collector/skywalking-collector-actor/src/main/java/com/a/eye/skywalking/collector/actor/
Ref
Router.java
→
skywalking-collector/skywalking-collector-actor/src/main/java/com/a/eye/skywalking/collector/actor/
router/Worker
Router.java
浏览文件 @
e8fb8e34
package
com.a.eye.skywalking.collector.actor
;
package
com.a.eye.skywalking.collector.actor
.router
;
import
akka.actor.ActorRef
;
...
...
@@ -7,6 +7,6 @@ import java.util.List;
/**
* @author wusheng
*/
public
interface
Ref
Router
{
ActorRef
find
(
List
<
ActorRef
>
candidates
);
public
interface
Worker
Router
{
ActorRef
find
(
String
workerRole
);
}
skywalking-collector/skywalking-collector-actor/src/test/java/com/a/eye/skywalking/collector/actor/AbstractWorkerProviderTestCase.java
浏览文件 @
e8fb8e34
package
com.a.eye.skywalking.collector.actor
;
import
akka.actor.ActorRef
;
import
akka.actor.ActorSelection
;
import
akka.actor.ActorSystem
;
import
akka.testkit.JavaTestKit
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
/**
*
Created by wusheng on 2017/2/24.
*
@author pengys5
*/
public
class
AbstractWorkerProviderTestCase
{
...
...
@@ -26,21 +29,68 @@ public class AbstractWorkerProviderTestCase {
}
@Test
(
expected
=
IllegalArgumentException
.
class
)
public
void
testCreateWorker
()
{
public
void
testCreateWorker
WhenWorkNameIsNull
()
{
AbstractWorkerProvider
aWorkerProvider
=
new
AbstractWorkerProvider
()
{
@Override
public
String
workerName
()
{
@Override
public
String
workerRole
()
{
return
null
;
}
@Override
public
Class
workerClass
()
{
@Override
public
Class
workerClass
()
{
return
Object
.
class
;
}
@Override
public
int
workerNum
()
{
@Override
public
int
workerNum
()
{
return
1
;
}
};
aWorkerProvider
.
createWorker
(
system
);
}
@Test
(
expected
=
IllegalArgumentException
.
class
)
public
void
testCreateWorkerWhenWorkerClassIsNull
()
{
AbstractWorkerProvider
aWorkerProvider
=
new
AbstractWorkerProvider
()
{
@Override
public
String
workerRole
()
{
return
"Test"
;
}
@Override
public
Class
workerClass
()
{
return
Object
.
class
;
}
@Override
public
int
workerNum
()
{
return
1
;
}
};
aWorkerProvider
.
createWorker
(
system
);
}
@Test
(
expected
=
IllegalArgumentException
.
class
)
public
void
testCreateWorkerWhenWorkerNumLessThan_1
()
{
AbstractWorkerProvider
aWorkerProvider
=
new
AbstractWorkerProvider
()
{
@Override
public
String
workerRole
()
{
return
"Test"
;
}
@Override
public
Class
workerClass
()
{
return
null
;
}
@Override
public
int
workerNum
()
{
return
0
;
}
};
aWorkerProvider
.
createWorker
(
system
);
}
}
skywalking-collector/skywalking-collector-actor/src/test/java/com/a/eye/skywalking/collector/actor/SpiTestWorker.java
浏览文件 @
e8fb8e34
package
com.a.eye.skywalking.collector.actor
;
import
akka.japi.Creator
;
/**
* @author pengys5
*/
public
class
SpiTestWorker
extends
AbstractWorker
{
@Override
public
void
onReceive
(
Object
message
)
throws
Throwable
{
public
SpiTestWorker
(
String
workerRole
)
{
super
(
workerRole
);
}
@Override
public
void
receive
(
Object
message
)
{
if
(
message
.
equals
(
"Test1"
))
{
getSender
().
tell
(
"Yes"
,
getSelf
());
}
else
if
(
message
.
equals
(
"Test2"
))
{
getSender
().
tell
(
"No"
,
getSelf
());
}
}
}
skywalking-collector/skywalking-collector-actor/src/test/java/com/a/eye/skywalking/collector/actor/SpiTestWorkerFactory.java
浏览文件 @
e8fb8e34
...
...
@@ -5,11 +5,11 @@ package com.a.eye.skywalking.collector.actor;
*/
public
class
SpiTestWorkerFactory
extends
AbstractWorkerProvider
{
public
static
final
String
Worker
Nam
e
=
"SpiTestWorker"
;
public
static
final
String
Worker
Rol
e
=
"SpiTestWorker"
;
@Override
public
String
worker
Nam
e
()
{
return
Worker
Nam
e
;
public
String
worker
Rol
e
()
{
return
Worker
Rol
e
;
}
@Override
...
...
skywalking-collector/skywalking-collector-actor/src/test/java/com/a/eye/skywalking/collector/actor/SpiTestWorkerFactoryTestCase.java
浏览文件 @
e8fb8e34
package
com.a.eye.skywalking.collector.actor
;
import
akka.actor.ActorSystem
;
import
akka.testkit.JavaTestKit
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
...
...
@@ -26,11 +27,14 @@ public class SpiTestWorkerFactoryTestCase {
}
@Test
public
void
testWorkerCreate
()
{
SpiTestWorkerFactory
factory
=
Mockito
.
mock
(
SpiTestWorkerFactory
.
class
);
Mockito
.
when
(
factory
.
workerName
()).
thenReturn
(
""
);
factory
.
createWorker
(
system
);
public
void
testCreateWorker
()
{
new
JavaTestKit
(
system
)
{{
SpiTestWorkerFactory
aWorkerProvider
=
new
SpiTestWorkerFactory
();
aWorkerProvider
.
createWorker
(
system
);
system
.
actorSelection
(
"/user/"
+
SpiTestWorkerFactory
.
WorkerRole
+
"_1"
).
tell
(
"Test1"
,
getRef
());
expectMsgEquals
(
duration
(
"1 second"
),
"Yes"
);
system
.
actorSelection
(
"/user/"
+
SpiTestWorkerFactory
.
WorkerRole
+
"_2"
).
tell
(
"Test2"
,
getRef
());
expectMsgEquals
(
duration
(
"1 second"
),
"No"
);
}};
}
}
skywalking-collector/skywalking-collector-actor/src/test/java/com/a/eye/skywalking/collector/actor/WorkersCreatorTestCase.java
浏览文件 @
e8fb8e34
package
com.a.eye.skywalking.collector.actor
;
import
akka.actor.ActorSystem
;
import
akka.testkit.JavaTestKit
;
import
org.junit.After
;
import
org.junit.Before
;
import
org.junit.Test
;
...
...
@@ -26,6 +27,13 @@ public class WorkersCreatorTestCase {
@Test
public
void
testBoot
()
{
WorkersCreator
.
INSTANCE
.
boot
(
system
);
new
JavaTestKit
(
system
)
{{
WorkersCreator
.
INSTANCE
.
boot
(
system
);
system
.
actorSelection
(
"/user/SpiTestWorker_1"
).
tell
(
"Test1"
,
getRef
());
expectMsgEquals
(
duration
(
"1 second"
),
"Yes"
);
system
.
actorSelection
(
"/user/SpiTestWorker_2"
).
tell
(
"Test2"
,
getRef
());
expectMsgEquals
(
duration
(
"1 second"
),
"No"
);
}};
}
}
skywalking-collector/skywalking-collector-actor/src/
main/resources
/services/com.a.eye.skywalking.collector.actor.AbstractWorkerProvider
→
skywalking-collector/skywalking-collector-actor/src/
test/resources/META-INF
/services/com.a.eye.skywalking.collector.actor.AbstractWorkerProvider
浏览文件 @
e8fb8e34
文件已移动
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/WorkerListenerMessage.java
浏览文件 @
e8fb8e34
...
...
@@ -8,14 +8,14 @@ import java.io.Serializable;
public
class
WorkerListenerMessage
{
public
static
class
RegisterMessage
implements
Serializable
{
public
final
String
r
ole
;
public
final
String
workR
ole
;
public
RegisterMessage
(
String
r
ole
)
{
this
.
role
=
r
ole
;
public
RegisterMessage
(
String
workR
ole
)
{
this
.
workRole
=
workR
ole
;
}
public
String
getRole
()
{
return
r
ole
;
public
String
get
Work
Role
()
{
return
workR
ole
;
}
}
}
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/WorkersListener.java
浏览文件 @
e8fb8e34
...
...
@@ -9,6 +9,8 @@ import akka.actor.UntypedActor;
*/
public
class
WorkersListener
extends
UntypedActor
{
public
static
final
String
WorkName
=
"WorkersListener"
;
@Override
public
void
onReceive
(
Object
message
)
throws
Throwable
{
if
(
message
instanceof
WorkerListenerMessage
.
RegisterMessage
)
{
...
...
@@ -16,7 +18,7 @@ public class WorkersListener extends UntypedActor {
ActorRef
sender
=
getSender
();
getContext
().
watch
(
sender
);
WorkersRefCenter
.
INSTANCE
.
register
(
sender
,
register
.
getRole
());
WorkersRefCenter
.
INSTANCE
.
register
(
sender
,
register
.
get
Work
Role
());
}
else
if
(
message
instanceof
Terminated
)
{
Terminated
terminated
=
(
Terminated
)
message
;
WorkersRefCenter
.
INSTANCE
.
unregister
(
terminated
.
getActor
());
...
...
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/WorkersRefCenter.java
浏览文件 @
e8fb8e34
...
...
@@ -22,26 +22,26 @@ public enum WorkersRefCenter {
private
Map
<
ActorRef
,
String
>
actorToRole
=
new
ConcurrentHashMap
();
public
void
register
(
ActorRef
newRef
,
String
nam
e
)
{
if
(!
roleToActor
.
containsKey
(
nam
e
))
{
public
void
register
(
ActorRef
newRef
,
String
workerRol
e
)
{
if
(!
roleToActor
.
containsKey
(
workerRol
e
))
{
List
<
ActorRef
>
actorList
=
Collections
.
synchronizedList
(
new
ArrayList
<
ActorRef
>());
roleToActor
.
putIfAbsent
(
nam
e
,
actorList
);
roleToActor
.
putIfAbsent
(
workerRol
e
,
actorList
);
}
roleToActor
.
get
(
nam
e
).
add
(
newRef
);
actorToRole
.
put
(
newRef
,
nam
e
);
roleToActor
.
get
(
workerRol
e
).
add
(
newRef
);
actorToRole
.
put
(
newRef
,
workerRol
e
);
}
public
void
unregister
(
ActorRef
newRef
)
{
String
r
ole
=
actorToRole
.
get
(
newRef
);
roleToActor
.
get
(
r
ole
).
remove
(
newRef
);
String
workerR
ole
=
actorToRole
.
get
(
newRef
);
roleToActor
.
get
(
workerR
ole
).
remove
(
newRef
);
actorToRole
.
remove
(
newRef
);
}
// public ActorRef find(String name, RefRouter router
) {
// return router.find(roleToActor.get(name)
);
//
}
public
ActorRef
find
(
String
workerRole
,
int
sequence
)
{
return
roleToActor
.
get
(
workerRole
).
get
(
sequence
);
}
public
int
sizeOf
(
String
nam
e
)
{
return
roleToActor
.
get
(
nam
e
).
size
();
public
int
sizeOf
(
String
workerRol
e
)
{
return
roleToActor
.
get
(
workerRol
e
).
size
();
}
}
\ No newline at end of file
skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/CollectorBootStartUp.java
浏览文件 @
e8fb8e34
package
com.a.eye.skywalking.collector.worker
;
import
akka.actor.ActorSystem
;
import
akka.actor.Props
;
import
com.a.eye.skywalking.collector.cluster.Const
;
import
com.a.eye.skywalking.collector.cluster.consumer.TraceConsumerActor
;
/**
* @author pengys5
*/
...
...
skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/metric/ApplicationDiscoerWorkerFactory.java
浏览文件 @
e8fb8e34
package
com.a.eye.skywalking.collector.worker.metric
;
import
com.a.eye.skywalking.collector.actor.AbstractWorkerProvider
;
import
com.a.eye.skywalking.collector.cluster.config.CollectorConfig
;
/**
* @author pengys5
...
...
@@ -22,6 +21,6 @@ public class ApplicationDiscoerWorkerFactory extends AbstractWorkerProvider {
@Override
public
int
workerNum
()
{
return
CollectorConfig
.
Collector
.
Worker
.
ApplicationDiscoverMetric_Num
;
return
0
;
}
}
skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/metric/ApplicationDiscoverMetric.java
浏览文件 @
e8fb8e34
package
com.a.eye.skywalking.collector.worker.metric
;
import
com.a.eye.skywalking.collector.cluster.base.AbstractUntypedActor
;
import
com.a.eye.skywalking.collector.actor.AbstractWorker
;
/**
* @author pengys5
*/
public
class
ApplicationDiscoverMetric
extends
Abstract
UntypedActo
r
{
public
class
ApplicationDiscoverMetric
extends
Abstract
Worke
r
{
@Override
public
void
onReceive
(
Object
message
)
throws
Throwable
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录