Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
javalover123888
SkyWalking
提交
29064934
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,发现更多精彩内容 >>
提交
29064934
编写于
2月 21, 2017
作者:
wu-sheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor code, still have some performance issues.
上级
4710a94c
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
82 addition
and
55 deletion
+82
-55
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/consumer/TraceConsumerActor.java
...alking/collector/cluster/consumer/TraceConsumerActor.java
+4
-4
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorCache.java
.../eye/skywalking/collector/cluster/manager/ActorCache.java
+0
-17
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorManagerActor.java
...ywalking/collector/cluster/manager/ActorManagerActor.java
+8
-17
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorRefCenter.java
.../skywalking/collector/cluster/manager/ActorRefCenter.java
+47
-0
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/RefRouter.java
...a/eye/skywalking/collector/cluster/manager/RefRouter.java
+11
-0
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/message/ActorRegisterMessage.java
...lking/collector/cluster/message/ActorRegisterMessage.java
+3
-3
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/producer/TraceProducerActor.java
...alking/collector/cluster/producer/TraceProducerActor.java
+9
-14
未找到文件。
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/consumer/TraceConsumerActor.java
浏览文件 @
29064934
...
...
@@ -2,7 +2,7 @@ package com.a.eye.skywalking.collector.cluster.consumer;
import
akka.cluster.ClusterEvent
;
import
com.a.eye.skywalking.collector.cluster.Const
;
import
com.a.eye.skywalking.collector.cluster.message.ActorRegisteMessage
;
import
com.a.eye.skywalking.collector.cluster.message.ActorRegiste
r
Message
;
import
com.a.eye.skywalking.collector.cluster.message.TraceMessages.TransformationJob
;
import
com.a.eye.skywalking.collector.cluster.message.TraceMessages.TransformationResult
;
import
akka.actor.UntypedActor
;
...
...
@@ -56,8 +56,8 @@ public class TraceConsumerActor extends UntypedActor {
System
.
out
.
println
(
"register"
);
if
(
member
.
hasRole
(
Const
.
Trace_Producer_Role
))
{
System
.
out
.
println
(
"register: "
+
Const
.
Trace_Producer_Role
);
ActorRegiste
Message
.
RegisteMessage
registeMessage
=
new
ActorRegisteMessage
.
Registe
Message
(
Const
.
Trace_Consumer_Role
,
""
);
getContext
().
actorSelection
(
member
.
address
()
+
Const
.
Actor_Manager_Path
).
tell
(
registeMessage
,
getSelf
());
ActorRegiste
rMessage
.
RegisterMessage
registerMessage
=
new
ActorRegisterMessage
.
Register
Message
(
Const
.
Trace_Consumer_Role
,
""
);
getContext
().
actorSelection
(
member
.
address
()
+
Const
.
Actor_Manager_Path
).
tell
(
registe
r
Message
,
getSelf
());
}
}
}
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorCache.java
已删除
100644 → 0
浏览文件 @
4710a94c
package
com.a.eye.skywalking.collector.cluster.manager
;
import
akka.actor.ActorRef
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* Created by Administrator on 2017/2/21 0021.
*/
public
class
ActorCache
{
public
static
Map
<
String
,
List
<
ActorRef
>>
roleToActor
=
new
ConcurrentHashMap
();
public
static
Map
<
ActorRef
,
String
>
actorToRole
=
new
ConcurrentHashMap
();
}
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorManagerActor.java
浏览文件 @
29064934
package
com.a.eye.skywalking.collector.cluster.manager
;
import
akka.actor.ActorRef
;
import
akka.actor.Terminated
;
import
akka.actor.UntypedActor
;
import
com.a.eye.skywalking.collector.cluster.message.ActorRegisteMessage
;
import
java.util.*
;
import
com.a.eye.skywalking.collector.cluster.message.ActorRegisterMessage
;
/**
* Created by Administrator on 2017/2/21 0021.
...
...
@@ -14,23 +11,17 @@ public class ActorManagerActor extends UntypedActor {
@Override
public
void
onReceive
(
Object
message
)
throws
Throwable
{
if
(
message
instanceof
ActorRegisteMessage
.
RegisteMessage
)
{
System
.
out
.
println
(
"RegisteMessage"
);
ActorRegisteMessage
.
RegisteMessage
regist
=
(
ActorRegisteMessage
.
RegisteMessage
)
message
;
getContext
().
watch
(
getSender
());
if
(!
ActorCache
.
roleToActor
.
containsKey
(
regist
.
getRole
()))
{
List
<
ActorRef
>
actorList
=
Collections
.
synchronizedList
(
new
ArrayList
<
ActorRef
>());
ActorCache
.
roleToActor
.
putIfAbsent
(
regist
.
getRole
(),
actorList
);
}
if
(
message
instanceof
ActorRegisterMessage
.
RegisterMessage
)
{
System
.
out
.
println
(
"RegisterMessage"
);
ActorRegisterMessage
.
RegisterMessage
regist
=
(
ActorRegisterMessage
.
RegisterMessage
)
message
;
getContext
().
watch
(
getSender
());
ActorCache
.
roleToActor
.
get
(
regist
.
getRole
()).
add
(
getSender
());
Actor
Cache
.
actorToRole
.
put
(
getSender
(),
regist
.
getRole
());
Actor
RefCenter
.
INSTANCE
.
register
(
getSender
(),
regist
.
getRole
());
}
else
if
(
message
instanceof
Terminated
)
{
System
.
out
.
println
(
"Terminated"
);
Terminated
terminated
=
(
Terminated
)
message
;
String
role
=
ActorCache
.
actorToRole
.
get
(
terminated
.
getActor
());
ActorCache
.
roleToActor
.
get
(
role
).
remove
(
terminated
.
getActor
());
ActorCache
.
actorToRole
.
remove
(
terminated
.
getActor
());
ActorRefCenter
.
INSTANCE
.
unregister
(
terminated
.
getActor
());
}
else
{
unhandled
(
message
);
}
...
...
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/ActorRefCenter.java
0 → 100644
浏览文件 @
29064934
package
com.a.eye.skywalking.collector.cluster.manager
;
import
akka.actor.ActorRef
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* <code>ActorRefCenter</code> represent a cache center,
* store all {@link ActorRef}s, each of them represent a Akka Actor instance.
* All the Actors in this JVM, can find alive-actor in here, and send message.
*
* @author wusheng
*/
public
enum
ActorRefCenter
{
INSTANCE
;
private
Map
<
String
,
List
<
ActorRef
>>
roleToActor
=
new
ConcurrentHashMap
();
private
Map
<
ActorRef
,
String
>
actorToRole
=
new
ConcurrentHashMap
();
public
void
register
(
ActorRef
newRef
,
String
name
){
if
(!
roleToActor
.
containsKey
(
name
))
{
List
<
ActorRef
>
actorList
=
Collections
.
synchronizedList
(
new
ArrayList
<
ActorRef
>());
roleToActor
.
putIfAbsent
(
name
,
actorList
);
}
roleToActor
.
get
(
name
).
add
(
newRef
);
actorToRole
.
put
(
newRef
,
name
);
}
public
void
unregister
(
ActorRef
newRef
){
String
role
=
actorToRole
.
get
(
newRef
);
roleToActor
.
get
(
role
).
remove
(
newRef
);
actorToRole
.
remove
(
newRef
);
}
public
ActorRef
find
(
String
name
,
RefRouter
router
){
return
router
.
find
(
roleToActor
.
get
(
name
));
}
public
int
sizeOf
(
String
name
){
return
roleToActor
.
get
(
name
).
size
();
}
}
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/manager/RefRouter.java
0 → 100644
浏览文件 @
29064934
package
com.a.eye.skywalking.collector.cluster.manager
;
import
akka.actor.ActorRef
;
import
java.util.List
;
/**
* Created by wusheng on 2017/2/21.
*/
public
interface
RefRouter
{
ActorRef
find
(
List
<
ActorRef
>
candidates
);
}
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/message/ActorRegisteMessage.java
→
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/message/ActorRegiste
r
Message.java
浏览文件 @
29064934
...
...
@@ -5,13 +5,13 @@ import java.io.Serializable;
/**
* Created by Administrator on 2017/2/21 0021.
*/
public
interface
ActorRegisteMessage
{
public
interface
ActorRegiste
r
Message
{
public
static
class
RegisteMessage
implements
Serializable
{
public
static
class
Registe
r
Message
implements
Serializable
{
public
final
String
role
;
public
final
String
action
;
public
RegisteMessage
(
String
role
,
String
action
)
{
public
Registe
r
Message
(
String
role
,
String
action
)
{
this
.
role
=
role
;
this
.
action
=
action
;
}
...
...
skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/cluster/producer/TraceProducerActor.java
浏览文件 @
29064934
package
com.a.eye.skywalking.collector.cluster.producer
;
import
static
com
.
a
.
eye
.
skywalking
.
collector
.
cluster
.
message
.
TraceMessages
.
BACKEND_REGISTRATION
;
import
akka.actor.ActorRef
;
import
com.a.eye.skywalking.collector.cluster.Const
;
import
com.a.eye.skywalking.collector.cluster.manager.Actor
Cache
;
import
com.a.eye.skywalking.collector.cluster.manager.Actor
RefCenter
;
import
com.a.eye.skywalking.collector.cluster.message.TraceMessages.JobFailed
;
import
com.a.eye.skywalking.collector.cluster.message.TraceMessages.TransformationJob
;
import
akka.actor.Terminated
;
import
akka.actor.UntypedActor
;
import
org.springframework.context.annotation.Scope
;
import
java.util.List
;
//#frontend
//@Named("TraceProducerActor")
@Scope
(
"prototype"
)
...
...
@@ -22,20 +16,21 @@ public class TraceProducerActor extends UntypedActor {
@Override
public
void
onReceive
(
Object
message
)
{
List
<
ActorRef
>
actorList
=
ActorCache
.
roleToActor
.
get
(
Const
.
Trace_Consumer_Role
);
if
(
actor
List
==
null
)
{
int
actorSize
=
ActorRefCenter
.
INSTANCE
.
sizeOf
(
Const
.
Trace_Consumer_Role
);
if
(
actor
Size
==
0
)
{
System
.
out
.
println
(
"actorList null"
);
}
else
{
System
.
out
.
println
(
"size
: "
+
actorList
.
size
()
);
System
.
out
.
println
(
"size
Of: "
+
actorSize
);
}
if
((
message
instanceof
TransformationJob
)
&&
actor
List
==
null
)
{
TransformationJob
job
=
(
TransformationJob
)
message
;
if
((
message
instanceof
TransformationJob
)
&&
actor
Size
==
0
)
{
TransformationJob
job
=
(
TransformationJob
)
message
;
getSender
().
tell
(
new
JobFailed
(
"Service unavailable, try again later"
,
job
),
getSender
());
}
else
if
(
message
instanceof
TransformationJob
)
{
TransformationJob
job
=
(
TransformationJob
)
message
;
TransformationJob
job
=
(
TransformationJob
)
message
;
jobCounter
++;
actorList
.
get
(
jobCounter
%
actorList
.
size
()).
forward
(
job
,
getContext
());
ActorRefCenter
.
INSTANCE
.
find
(
Const
.
Trace_Consumer_Role
,
(
candidates
)
->
candidates
.
get
(
jobCounter
%
candidates
.
size
()));
}
else
{
unhandled
(
message
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录