Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿信在这里
SkyWalking
提交
f594c99a
S
SkyWalking
项目概览
阿信在这里
/
SkyWalking
与 Fork 源项目一致
Fork自
山不在高_有仙则灵 / SkyWalking
通知
1
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,发现更多精彩内容 >>
提交
f594c99a
编写于
6月 12, 2016
作者:
A
ascrutae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.Redis集群插件提交
上级
3865edc2
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
185 addition
and
74 deletion
+185
-74
skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java
...loud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java
+48
-0
skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisClusterInterceptor.java
...d/skywalking/jedis/v2/plugin/JedisClusterInterceptor.java
+29
-0
skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisInterceptor.java
...ai/cloud/skywalking/jedis/v2/plugin/JedisInterceptor.java
+26
-73
skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java
...king/jedis/v2/plugin/define/JedisClusterPluginDefine.java
+29
-0
skywalking-sdk-plugin/jedis-2.x-plugin/src/main/resources/skywalking-plugin.def
...jedis-2.x-plugin/src/main/resources/skywalking-plugin.def
+2
-1
skywalking-sdk-plugin/jedis-2.x-plugin/src/test/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisClusterTest.java
...ai/cloud/skywalking/jedis/v2/plugin/JedisClusterTest.java
+51
-0
未找到文件。
skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java
0 → 100644
浏览文件 @
f594c99a
package
com.ai.cloud.skywalking.jedis.v2.plugin
;
import
com.ai.cloud.skywalking.buriedpoint.RPCBuriedPointSender
;
import
com.ai.cloud.skywalking.model.Identification
;
import
com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext
;
import
com.ai.cloud.skywalking.plugin.interceptor.MethodInvokeContext
;
import
com.ai.cloud.skywalking.plugin.interceptor.assist.FirstInvokeInterceptor
;
public
abstract
class
JedisBaseInterceptor
extends
FirstInvokeInterceptor
{
protected
static
final
String
REDIS_CONN_INFO_KEY
=
"redisClusterConnInfo"
;
private
static
RPCBuriedPointSender
sender
=
new
RPCBuriedPointSender
();
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
MethodInvokeContext
interceptorContext
)
{
if
(
this
.
isFirstBeforeMethod
(
context
))
{
/**
* redis server wouldn't process rpc context. ignore the
* return(ContextData) of sender's beforeSend
*/
Identification
.
IdentificationBuilder
builder
=
Identification
.
newBuilder
()
.
viewPoint
(
context
.
get
(
REDIS_CONN_INFO_KEY
,
String
.
class
)
+
" "
+
interceptorContext
.
methodName
())
.
spanType
(
RedisBuriedPointType
.
instance
());
if
(
interceptorContext
.
allArguments
().
length
>
0
&&
interceptorContext
.
allArguments
()[
0
]
instanceof
String
)
{
builder
.
businessKey
(
"key="
+
interceptorContext
.
allArguments
()[
0
]);
}
sender
.
beforeSend
(
builder
.
build
());
}
}
@Override
public
Object
afterMethod
(
EnhancedClassInstanceContext
context
,
MethodInvokeContext
interceptorContext
,
Object
ret
)
{
if
(
this
.
isLastAfterMethod
(
context
))
{
sender
.
afterSend
();
}
return
ret
;
}
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
MethodInvokeContext
interceptorContext
,
Object
ret
)
{
sender
.
handleException
(
t
);
}
}
skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisClusterInterceptor.java
0 → 100644
浏览文件 @
f594c99a
package
com.ai.cloud.skywalking.jedis.v2.plugin
;
import
com.ai.cloud.skywalking.plugin.interceptor.ConstructorInvokeContext
;
import
com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext
;
import
redis.clients.jedis.HostAndPort
;
import
java.util.Set
;
/**
* Created by xin on 16-6-12.
*/
public
class
JedisClusterInterceptor
extends
JedisBaseInterceptor
{
@Override
public
void
onConstruct
(
EnhancedClassInstanceContext
context
,
ConstructorInvokeContext
interceptorContext
)
{
StringBuilder
redisConnInfo
=
new
StringBuilder
();
if
(
interceptorContext
.
allArguments
().
length
>
0
)
{
if
(
interceptorContext
.
allArguments
()[
0
]
instanceof
Set
)
{
Set
<
HostAndPort
>
hostAndPorts
=
(
Set
<
HostAndPort
>)
interceptorContext
.
allArguments
()[
0
];
for
(
HostAndPort
hostAndPort
:
hostAndPorts
)
{
redisConnInfo
.
append
(
hostAndPort
.
toString
()).
append
(
";"
);
}
}
else
if
(
interceptorContext
.
allArguments
()[
0
]
instanceof
HostAndPort
)
{
HostAndPort
hostAndPort
=
(
HostAndPort
)
interceptorContext
.
allArguments
()[
0
];
redisConnInfo
.
append
(
hostAndPort
.
toString
()).
append
(
";"
);
}
}
context
.
set
(
REDIS_CONN_INFO_KEY
,
redisConnInfo
.
toString
());
}
}
skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisInterceptor.java
浏览文件 @
f594c99a
package
com.ai.cloud.skywalking.jedis.v2.plugin
;
import
java.net.URI
;
import
redis.clients.jedis.JedisShardInfo
;
import
com.ai.cloud.skywalking.buriedpoint.RPCBuriedPointSender
;
import
com.ai.cloud.skywalking.model.Identification
;
import
com.ai.cloud.skywalking.model.Identification.IdentificationBuilder
;
import
com.ai.cloud.skywalking.plugin.interceptor.ConstructorInvokeContext
;
import
com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext
;
import
com.ai.cloud.skywalking.plugin.interceptor.MethodInvokeContext
;
import
com.ai.cloud.skywalking.plugin.interceptor.assist.FirstInvokeInterceptor
;
import
redis.clients.jedis.JedisShardInfo
;
public
class
JedisInterceptor
extends
FirstInvokeInterceptor
{
private
static
final
String
REDIS_CONN_INFO_KEY
=
"redisConnInfo"
;
import
java.net.URI
;
private
static
RPCBuriedPointSender
sender
=
new
RPCBuriedPointSender
();
public
class
JedisInterceptor
extends
JedisBaseInterceptor
{
@Override
public
void
onConstruct
(
EnhancedClassInstanceContext
context
,
...
...
@@ -40,43 +32,4 @@ public class JedisInterceptor extends FirstInvokeInterceptor {
context
.
set
(
REDIS_CONN_INFO_KEY
,
redisConnInfo
);
}
@Override
public
void
beforeMethod
(
EnhancedClassInstanceContext
context
,
MethodInvokeContext
interceptorContext
)
{
if
(
this
.
isFirstBeforeMethod
(
context
))
{
/**
* redis server wouldn't process rpc context. ignore the
* return(ContextData) of sender's beforeSend
*/
IdentificationBuilder
builder
=
Identification
.
newBuilder
()
.
viewPoint
(
context
.
get
(
REDIS_CONN_INFO_KEY
,
String
.
class
)
+
" "
+
interceptorContext
.
methodName
())
.
spanType
(
RedisBuriedPointType
.
instance
());
if
(
interceptorContext
.
allArguments
().
length
>
0
&&
interceptorContext
.
allArguments
()[
0
]
instanceof
String
)
{
builder
.
businessKey
(
"key="
+
interceptorContext
.
allArguments
()[
0
]);
}
sender
.
beforeSend
(
builder
.
build
());
}
}
@Override
public
Object
afterMethod
(
EnhancedClassInstanceContext
context
,
MethodInvokeContext
interceptorContext
,
Object
ret
)
{
if
(
this
.
isLastAfterMethod
(
context
))
{
sender
.
afterSend
();
}
return
ret
;
}
@Override
public
void
handleMethodException
(
Throwable
t
,
EnhancedClassInstanceContext
context
,
MethodInvokeContext
interceptorContext
,
Object
ret
)
{
sender
.
handleException
(
t
);
}
}
skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java
0 → 100644
浏览文件 @
f594c99a
package
com.ai.cloud.skywalking.jedis.v2.plugin.define
;
import
com.ai.cloud.skywalking.jedis.v2.plugin.JedisClusterInterceptor
;
import
com.ai.cloud.skywalking.plugin.interceptor.IAroundInterceptor
;
import
com.ai.cloud.skywalking.plugin.interceptor.InterceptorDefine
;
import
com.ai.cloud.skywalking.plugin.interceptor.MethodMatcher
;
import
com.ai.cloud.skywalking.plugin.interceptor.matcher.AnyMethodMatcher
;
import
com.ai.cloud.skywalking.plugin.interceptor.matcher.MethodsExclusiveMatcher
;
import
com.ai.cloud.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher
;
public
class
JedisClusterPluginDefine
implements
InterceptorDefine
{
@Override
public
String
getBeInterceptedClassName
()
{
return
"redis.clients.jedis.JedisCluster"
;
}
@Override
public
MethodMatcher
[]
getBeInterceptedMethodsMatchers
()
{
return
new
MethodMatcher
[]{
new
SimpleMethodMatcher
(
"set"
)
};
}
@Override
public
IAroundInterceptor
instance
()
{
return
new
JedisClusterInterceptor
();
}
}
skywalking-sdk-plugin/jedis-2.x-plugin/src/main/resources/skywalking-plugin.def
浏览文件 @
f594c99a
com.ai.cloud.skywalking.jedis.v2.plugin.define.JedisPluginDefine
com.ai.cloud.skywalking.jedis.v2.plugin.define.JedisClusterPluginDefine
\ No newline at end of file
skywalking-sdk-plugin/jedis-2.x-plugin/src/test/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisClusterTest.java
0 → 100644
浏览文件 @
f594c99a
package
com.ai.cloud.skywalking.jedis.v2.plugin
;
import
com.ai.cloud.skywalking.plugin.TracingBootstrap
;
import
org.junit.Test
;
import
redis.clients.jedis.HostAndPort
;
import
redis.clients.jedis.JedisCluster
;
import
java.lang.reflect.InvocationTargetException
;
import
java.sql.SQLException
;
import
java.util.HashSet
;
import
java.util.Set
;
public
class
JedisClusterTest
{
@Test
public
void
test
()
throws
IllegalAccessException
,
IllegalArgumentException
,
InvocationTargetException
,
NoSuchMethodException
,
SecurityException
,
ClassNotFoundException
{
TracingBootstrap
.
main
(
new
String
[]{
"com.ai.cloud.skywalking.jedis.v2.plugin.JedisClusterTest"
});
}
public
static
void
main
(
String
[]
args
)
throws
ClassNotFoundException
,
SQLException
,
InterruptedException
{
JedisCluster
jedisCluster
=
null
;
try
{
jedisCluster
=
new
JedisCluster
(
getHostAndPorts
());
long
start
=
System
.
currentTimeMillis
();
jedisCluster
.
set
(
"11111"
,
"111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
);
long
end
=
System
.
currentTimeMillis
();
System
.
out
.
println
(
end
-
start
+
"ms"
);
jedisCluster
.
del
(
"11111"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
private
static
Set
<
HostAndPort
>
getHostAndPorts
()
{
Set
<
HostAndPort
>
redisEnv
=
new
HashSet
<
HostAndPort
>();
redisEnv
.
add
(
new
HostAndPort
(
"127.0.0.1"
,
7000
));
redisEnv
.
add
(
new
HostAndPort
(
"127.0.0.1"
,
7001
));
redisEnv
.
add
(
new
HostAndPort
(
"127.0.0.1"
,
7002
));
redisEnv
.
add
(
new
HostAndPort
(
"127.0.0.1"
,
7003
));
redisEnv
.
add
(
new
HostAndPort
(
"127.0.0.1"
,
7004
));
redisEnv
.
add
(
new
HostAndPort
(
"127.0.0.1"
,
7005
));
return
redisEnv
;
}
public
void
testNormal
()
throws
InstantiationException
,
IllegalAccessException
,
ClassNotFoundException
,
SQLException
,
InterruptedException
{
JedisClusterTest
.
main
(
null
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录