Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
SkyWalking
提交
dcf859df
S
SkyWalking
项目概览
apache
/
SkyWalking
上一次同步 1 年多
通知
302
Star
21345
Fork
6091
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
dcf859df
编写于
11月 06, 2016
作者:
A
ascrutae
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
完成按照TraceID读取数据的逻辑
上级
06f171d8
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
198 addition
and
49 deletion
+198
-49
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/SpanDataConsumer.java
...a/com/a/eye/skywalking/storage/data/SpanDataConsumer.java
+12
-9
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/SpanDataFinder.java
...ava/com/a/eye/skywalking/storage/data/SpanDataFinder.java
+42
-0
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/exception/SpanDataReadFailedException.java
...g/storage/data/exception/SpanDataReadFailedException.java
+10
-0
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/file/DataFile.java
...java/com/a/eye/skywalking/storage/data/file/DataFile.java
+14
-2
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/file/DataFileReader.java
...om/a/eye/skywalking/storage/data/file/DataFileReader.java
+28
-0
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/file/DataFileWriter.java
...om/a/eye/skywalking/storage/data/file/DataFileWriter.java
+3
-3
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/GroupKeyBuilder.java
.../a/eye/skywalking/storage/data/index/GroupKeyBuilder.java
+10
-0
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexDBConnector.java
...a/eye/skywalking/storage/data/index/IndexDBConnector.java
+5
-1
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexMetaCollection.java
...ye/skywalking/storage/data/index/IndexMetaCollection.java
+51
-0
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexMetaCollections.java
...e/skywalking/storage/data/index/IndexMetaCollections.java
+12
-25
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexMetaGroup.java
...m/a/eye/skywalking/storage/data/index/IndexMetaGroup.java
+11
-9
未找到文件。
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/SpanDataConsumer.java
浏览文件 @
dcf859df
...
...
@@ -2,10 +2,7 @@ package com.a.eye.skywalking.storage.data;
import
com.a.eye.datacarrier.consumer.IConsumer
;
import
com.a.eye.skywalking.storage.data.file.DataFileWriter
;
import
com.a.eye.skywalking.storage.data.index.IndexDBConnector
;
import
com.a.eye.skywalking.storage.data.index.IndexMetaGroup
;
import
com.a.eye.skywalking.storage.data.index.IndexOperator
;
import
com.a.eye.skywalking.storage.data.index.IndexDBConnectorCache
;
import
com.a.eye.skywalking.storage.data.index.*
;
import
java.util.Iterator
;
import
java.util.List
;
...
...
@@ -15,7 +12,7 @@ public class SpanDataConsumer implements IConsumer<SpanData> {
private
IndexDBConnectorCache
cache
;
private
DataFileWriter
fileWriter
;
public
SpanDataConsumer
(){
public
SpanDataConsumer
()
{
cache
=
new
IndexDBConnectorCache
();
fileWriter
=
new
DataFileWriter
();
}
...
...
@@ -23,18 +20,24 @@ public class SpanDataConsumer implements IConsumer<SpanData> {
@Override
public
void
consume
(
List
<
SpanData
>
data
)
{
Iterator
<
IndexMetaGroup
>
iterator
=
fileWriter
.
write
(
data
).
group
();
Iterator
<
IndexMetaGroup
<
Long
>>
iterator
=
IndexMetaCollections
.
group
(
fileWriter
.
write
(
data
),
new
GroupKeyBuilder
<
Long
>()
{
@Override
public
Long
buildKey
(
IndexMetaInfo
metaInfo
)
{
return
metaInfo
.
getStartTime
();
}
}).
iterator
();
while
(
iterator
.
hasNext
())
{
IndexMetaGroup
metaGroup
=
iterator
.
next
();
IndexMetaGroup
<
Long
>
metaGroup
=
iterator
.
next
();
IndexOperator
indexOperator
=
IndexOperator
.
newOperator
(
getDBConnector
(
metaGroup
));
indexOperator
.
batchUpdate
(
metaGroup
);
}
}
private
IndexDBConnector
getDBConnector
(
IndexMetaGroup
metaGroup
)
{
return
cache
.
get
(
metaGroup
.
get
Timestamp
());
private
IndexDBConnector
getDBConnector
(
IndexMetaGroup
<
Long
>
metaGroup
)
{
return
cache
.
get
(
metaGroup
.
get
Key
());
}
@Override
...
...
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/SpanDataFinder.java
0 → 100644
浏览文件 @
dcf859df
package
com.a.eye.skywalking.storage.data
;
import
com.a.eye.skywalking.storage.block.index.BlockIndexEngine
;
import
com.a.eye.skywalking.storage.data.file.DataFileReader
;
import
com.a.eye.skywalking.storage.data.file.DataFileWriter
;
import
com.a.eye.skywalking.storage.data.index.*
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
/**
* Created by xin on 2016/11/6.
*/
public
class
SpanDataFinder
{
public
static
List
<
byte
[]>
find
(
String
traceId
)
{
long
blockIndex
=
BlockIndexEngine
.
newFinder
().
find
(
fetchStartTimeFromTraceId
(
traceId
));
IndexDBConnector
indexDBConnector
=
new
IndexDBConnector
(
blockIndex
);
IndexMetaCollection
indexMetaCollection
=
indexDBConnector
.
queryByTraceId
(
traceId
);
Iterator
<
IndexMetaGroup
<
String
>>
iterator
=
IndexMetaCollections
.
group
(
indexMetaCollection
,
new
GroupKeyBuilder
<
String
>()
{
@Override
public
String
buildKey
(
IndexMetaInfo
metaInfo
)
{
return
metaInfo
.
getFileName
();
}
}).
iterator
();
List
<
byte
[]>
result
=
new
ArrayList
<
byte
[]>();
while
(
iterator
.
hasNext
())
{
IndexMetaGroup
<
String
>
group
=
iterator
.
next
();
result
.
addAll
(
new
DataFileReader
(
group
.
getKey
()).
read
(
group
.
getMetaInfo
()));
}
return
result
;
}
private
static
long
fetchStartTimeFromTraceId
(
String
traceId
)
{
return
-
1
;
}
}
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/exception/SpanDataReadFailedException.java
0 → 100644
浏览文件 @
dcf859df
package
com.a.eye.skywalking.storage.data.exception
;
/**
* Created by xin on 2016/11/6.
*/
public
class
SpanDataReadFailedException
extends
RuntimeException
{
public
SpanDataReadFailedException
(
String
message
,
Exception
e
)
{
super
(
message
,
e
);
}
}
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/file/DataFile.java
浏览文件 @
dcf859df
...
...
@@ -4,6 +4,7 @@ import com.a.eye.skywalking.storage.config.Config;
import
com.a.eye.skywalking.storage.data.SpanData
;
import
com.a.eye.skywalking.storage.data.exception.DataFileOperatorCreateFailedException
;
import
com.a.eye.skywalking.storage.data.exception.SpanDataPersistenceFailedException
;
import
com.a.eye.skywalking.storage.data.exception.SpanDataReadFailedException
;
import
com.a.eye.skywalking.storage.data.index.IndexMetaInfo
;
import
java.io.File
;
...
...
@@ -26,9 +27,8 @@ public class DataFile {
operator
=
new
DataFileOperator
();
}
public
DataFile
(
String
fileName
,
long
offset
)
{
public
DataFile
(
String
fileName
)
{
this
.
fileName
=
fileName
;
this
.
currentOffset
=
offset
;
operator
=
new
DataFileOperator
();
}
...
...
@@ -62,6 +62,18 @@ public class DataFile {
}
}
public
byte
[]
read
(
long
offset
,
int
length
)
{
byte
[]
data
=
new
byte
[
length
];
try
{
operator
.
getReader
().
getChannel
().
position
(
offset
);
operator
.
getReader
().
read
(
data
,
0
,
length
);
return
data
;
}
catch
(
IOException
e
)
{
throw
new
SpanDataReadFailedException
(
"Failed to read dataFile["
+
fileName
+
"], offset: "
+
offset
+
" "
+
"lenght: "
+
length
,
e
);
}
}
class
DataFileOperator
{
private
FileOutputStream
writer
;
private
FileInputStream
reader
;
...
...
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/file/DataFileReader.java
0 → 100644
浏览文件 @
dcf859df
package
com.a.eye.skywalking.storage.data.file
;
import
com.a.eye.skywalking.storage.data.index.IndexMetaInfo
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
/**
* Created by xin on 2016/11/6.
*/
public
class
DataFileReader
{
private
DataFile
dataFile
;
public
DataFileReader
(
String
fileName
)
{
dataFile
=
new
DataFile
(
fileName
);
}
public
List
<
byte
[]>
read
(
List
<
IndexMetaInfo
>
metaInfo
)
{
List
<
byte
[]>
metaData
=
new
ArrayList
<
byte
[]>();
for
(
IndexMetaInfo
indexMetaInfo
:
metaInfo
){
metaData
.
add
(
dataFile
.
read
(
indexMetaInfo
.
getOffset
(),
indexMetaInfo
.
getLength
()));
}
return
metaData
;
}
}
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/file/DataFileWriter.java
浏览文件 @
dcf859df
package
com.a.eye.skywalking.storage.data.file
;
import
com.a.eye.skywalking.storage.data.SpanData
;
import
com.a.eye.skywalking.storage.data.index.IndexMetaCollection
s
;
import
com.a.eye.skywalking.storage.data.index.IndexMetaCollection
;
import
java.util.List
;
...
...
@@ -13,12 +13,12 @@ public class DataFileWriter {
dataFile
=
DataFilesManager
.
createNewDataFile
();
}
public
IndexMetaCollection
s
write
(
List
<
SpanData
>
spanData
)
{
public
IndexMetaCollection
write
(
List
<
SpanData
>
spanData
)
{
if
(
dataFile
.
overLimitLength
())
{
dataFile
=
DataFilesManager
.
createNewDataFile
();
}
IndexMetaCollection
s
collections
=
new
IndexMetaCollections
();
IndexMetaCollection
collections
=
new
IndexMetaCollection
();
for
(
SpanData
data
:
spanData
)
{
collections
.
add
(
dataFile
.
write
(
data
));
}
...
...
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/GroupKeyBuilder.java
0 → 100644
浏览文件 @
dcf859df
package
com.a.eye.skywalking.storage.data.index
;
import
com.a.eye.skywalking.storage.data.index.IndexMetaInfo
;
/**
* Created by xin on 2016/11/6.
*/
public
interface
GroupKeyBuilder
<
T
>
{
T
buildKey
(
IndexMetaInfo
metaInfo
);
}
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexDBConnector.java
浏览文件 @
dcf859df
...
...
@@ -86,7 +86,7 @@ public class IndexDBConnector {
return
timestamp
;
}
public
void
batchUpdate
(
IndexMetaGroup
metaGroup
)
throws
SQLException
{
public
void
batchUpdate
(
IndexMetaGroup
<
Long
>
metaGroup
)
throws
SQLException
{
int
currentIndex
=
0
;
PreparedStatement
ps
=
connection
.
prepareStatement
(
INSERT_INDEX
);
for
(
IndexMetaInfo
metaInfo
:
metaGroup
.
getMetaInfo
())
{
...
...
@@ -117,6 +117,10 @@ public class IndexDBConnector {
return
indexSize
;
}
public
IndexMetaCollection
queryByTraceId
(
String
traceId
)
{
return
null
;
}
class
ConnectURLGenerator
{
private
String
basePath
;
...
...
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexMetaCollection.java
0 → 100644
浏览文件 @
dcf859df
package
com.a.eye.skywalking.storage.data.index
;
import
com.a.eye.skywalking.storage.block.index.BlockFinder
;
import
com.a.eye.skywalking.storage.block.index.BlockIndexEngine
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
public
class
IndexMetaCollection
implements
Iterable
<
IndexMetaInfo
>
{
private
List
<
IndexMetaInfo
>
metaInfo
;
private
BlockFinder
finder
;
public
IndexMetaCollection
()
{
metaInfo
=
new
ArrayList
<>();
finder
=
BlockIndexEngine
.
newFinder
();
}
public
Iterator
<
IndexMetaGroup
>
group
()
{
List
<
IndexMetaGroup
>
indexMetaGroups
=
new
ArrayList
<
IndexMetaGroup
>();
for
(
IndexMetaInfo
info
:
metaInfo
)
{
long
timestamp
=
finder
.
find
(
info
.
getStartTime
());
int
index
=
indexMetaGroups
.
indexOf
(
new
IndexMetaGroup
(
timestamp
));
IndexMetaGroup
metaGroup
;
if
(
index
==
-
1
)
{
metaGroup
=
new
IndexMetaGroup
(
timestamp
);
indexMetaGroups
.
add
(
metaGroup
);
}
else
{
metaGroup
=
indexMetaGroups
.
get
(
index
);
}
metaGroup
.
addIndexMetaInfo
(
info
);
}
return
indexMetaGroups
.
iterator
();
}
public
void
add
(
IndexMetaInfo
info
)
{
metaInfo
.
add
(
info
);
}
@Override
public
Iterator
<
IndexMetaInfo
>
iterator
()
{
return
metaInfo
.
iterator
();
}
}
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexMetaCollections.java
浏览文件 @
dcf859df
package
com.a.eye.skywalking.storage.data.index
;
import
com.a.eye.skywalking.storage.block.index.BlockFinder
;
import
com.a.eye.skywalking.storage.block.index.BlockIndexEngine
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
/**
* Created by xin on 2016/11/6.
*/
public
class
IndexMetaCollections
{
private
List
<
IndexMetaInfo
>
metaInfo
;
private
BlockFinder
finder
;
public
IndexMetaCollections
()
{
metaInfo
=
new
ArrayList
<>();
finder
=
BlockIndexEngine
.
newFinder
();
}
public
static
<
T
>
List
<
IndexMetaGroup
<
T
>>
group
(
IndexMetaCollection
indexMetaCollection
,
GroupKeyBuilder
<
T
>
builder
)
{
List
<
IndexMetaGroup
<
T
>>
indexMetaGroups
=
new
ArrayList
<
IndexMetaGroup
<
T
>>();
public
Iterator
<
IndexMetaGroup
>
group
()
{
List
<
IndexMetaGroup
>
indexMetaGroups
=
new
ArrayList
<
IndexMetaGroup
>();
for
(
IndexMetaInfo
info
:
metaInfo
)
{
long
timestamp
=
finder
.
find
(
info
.
getStartTime
());
for
(
IndexMetaInfo
metaInfo
:
indexMetaCollection
)
{
T
key
=
builder
.
buildKey
(
metaInfo
);
int
index
=
indexMetaGroups
.
indexOf
(
new
IndexMetaGroup
(
timestamp
));
int
index
=
indexMetaGroups
.
indexOf
(
new
IndexMetaGroup
(
key
));
IndexMetaGroup
metaGroup
;
if
(
index
==
-
1
)
{
metaGroup
=
new
IndexMetaGroup
(
timestamp
);
metaGroup
=
new
IndexMetaGroup
(
key
);
indexMetaGroups
.
add
(
metaGroup
);
}
else
{
metaGroup
=
indexMetaGroups
.
get
(
index
);
}
metaGroup
.
addIndexMetaInfo
(
i
nfo
);
metaGroup
.
addIndexMetaInfo
(
metaI
nfo
);
}
return
indexMetaGroups
.
iterator
();
}
public
void
add
(
IndexMetaInfo
info
)
{
metaInfo
.
add
(
info
);
return
indexMetaGroups
;
}
}
skywalking-storage-center/skywalking-storage/src/main/java/com/a/eye/skywalking/storage/data/index/IndexMetaGroup.java
浏览文件 @
dcf859df
package
com.a.eye.skywalking.storage.data.index
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
/**
* Created by xin on 2016/11/4.
*/
public
class
IndexMetaGroup
{
public
class
IndexMetaGroup
<
V
>
{
private
long
timestamp
;
private
V
key
;
private
List
<
IndexMetaInfo
>
metaInfo
;
public
IndexMetaGroup
(
long
timestamp
)
{
this
.
timestamp
=
timestamp
;
public
IndexMetaGroup
(
V
key
)
{
this
.
key
=
key
;
metaInfo
=
new
ArrayList
<
IndexMetaInfo
>();
}
public
long
getTimestamp
()
{
return
timestamp
;
public
V
getKey
()
{
return
key
;
}
public
List
<
IndexMetaInfo
>
getMetaInfo
()
{
...
...
@@ -36,18 +37,19 @@ public class IndexMetaGroup {
if
(
o
==
null
||
getClass
()
!=
o
.
getClass
())
return
false
;
IndexMetaGroup
that
=
(
IndexMetaGroup
)
o
;
IndexMetaGroup
<?>
that
=
(
IndexMetaGroup
<?>
)
o
;
return
timestamp
==
that
.
timestamp
;
return
key
.
equals
(
that
.
key
)
;
}
@Override
public
int
hashCode
()
{
return
(
int
)
(
timestamp
^
(
timestamp
>>>
32
)
);
return
key
.
hashCode
(
);
}
public
int
size
()
{
return
metaInfo
.
size
();
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录