Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
milvus
提交
74429c90
milvus
项目概览
BaiXuePrincess
/
milvus
与 Fork 源项目一致
Fork自
milvus / milvus
通知
7
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
74429c90
编写于
10月 25, 2019
作者:
P
peng.xu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
implement plugin framework for tracer
上级
c73d1d83
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
93 addition
and
45 deletion
+93
-45
shards/mishards/__init__.py
shards/mishards/__init__.py
+10
-5
shards/mishards/settings.py
shards/mishards/settings.py
+1
-0
shards/requirements.txt
shards/requirements.txt
+1
-0
shards/tracer/__init__.py
shards/tracer/__init__.py
+0
-0
shards/tracer/factory.py
shards/tracer/factory.py
+48
-0
shards/tracer/plugins/jaeger_factory.py
shards/tracer/plugins/jaeger_factory.py
+33
-0
shards/tracing/factory.py
shards/tracing/factory.py
+0
-40
未找到文件。
shards/mishards/__init__.py
浏览文件 @
74429c90
...
...
@@ -19,17 +19,22 @@ def create_app(testing_config=None):
from
sd
import
ProviderManager
sd_proiver_class
=
ProviderManager
.
get_provider
(
settings
.
SD_PROVIDER
)
discover
=
sd_proiver_class
(
settings
=
settings
.
SD_PROVIDER_SETTINGS
,
conn_mgr
=
connect_mgr
)
discover
=
sd_proiver_class
(
settings
=
settings
.
SD_PROVIDER_SETTINGS
,
conn_mgr
=
connect_mgr
)
from
tracing.factory
import
TracerFactory
from
mishards.grpc_utils
import
GrpcSpanDecorator
tracer
=
TracerFactory
.
new_tracer
(
config
.
TRACING_TYPE
,
settings
.
TracingConfig
,
span_decorator
=
GrpcSpanDecorator
())
from
tracer.factory
import
TracerFactory
tracer
=
TracerFactory
(
config
.
TRACING_PLUGIN_PATH
).
create
(
config
.
TRACING_TYPE
,
settings
.
TracingConfig
,
span_decorator
=
GrpcSpanDecorator
())
from
mishards.routings
import
RouterFactory
router
=
RouterFactory
.
new_router
(
config
.
ROUTER_CLASS_NAME
,
connect_mgr
)
grpc_server
.
init_app
(
conn_mgr
=
connect_mgr
,
tracer
=
tracer
,
router
=
router
,
discover
=
discover
)
grpc_server
.
init_app
(
conn_mgr
=
connect_mgr
,
tracer
=
tracer
,
router
=
router
,
discover
=
discover
)
from
mishards
import
exception_handlers
...
...
shards/mishards/settings.py
浏览文件 @
74429c90
...
...
@@ -74,6 +74,7 @@ class TracingConfig:
class
DefaultConfig
:
SQLALCHEMY_DATABASE_URI
=
env
.
str
(
'SQLALCHEMY_DATABASE_URI'
)
SQL_ECHO
=
env
.
bool
(
'SQL_ECHO'
,
False
)
TRACING_PLUGIN_PATH
=
env
.
str
(
'TRACING_PLUGIN_PATH'
,
''
)
TRACING_TYPE
=
env
.
str
(
'TRACING_TYPE'
,
''
)
ROUTER_CLASS_NAME
=
env
.
str
(
'ROUTER_CLASS_NAME'
,
'FileBasedHashRingRouter'
)
...
...
shards/requirements.txt
浏览文件 @
74429c90
...
...
@@ -34,3 +34,4 @@ urllib3==1.25.3
jaeger-client>=3.4.0
grpcio-opentracing>=1.0
mock==2.0.0
pluginbase==1.0.0
shards/trac
ing
/__init__.py
→
shards/trac
er
/__init__.py
浏览文件 @
74429c90
文件已移动
shards/tracer/factory.py
0 → 100644
浏览文件 @
74429c90
import
os
import
logging
from
functools
import
partial
from
pluginbase
import
PluginBase
logger
=
logging
.
getLogger
(
__name__
)
here
=
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
))
get_path
=
partial
(
os
.
path
.
join
,
here
)
PLUGIN_PACKAGE_NAME
=
'tracer.plugins'
plugin_base
=
PluginBase
(
package
=
PLUGIN_PACKAGE_NAME
,
searchpath
=
[
get_path
(
'./plugins'
)])
class
TracerFactory
(
object
):
def
__init__
(
self
,
searchpath
=
None
):
self
.
plugin_package_name
=
PLUGIN_PACKAGE_NAME
self
.
tracer_map
=
{}
searchpath
=
searchpath
if
searchpath
else
[]
searchpath
=
[
searchpath
]
if
isinstance
(
searchpath
,
str
)
else
searchpath
self
.
source
=
plugin_base
.
make_plugin_source
(
searchpath
=
searchpath
,
identifier
=
self
.
__class__
.
__name__
)
for
plugin_name
in
self
.
source
.
list_plugins
():
plugin
=
self
.
source
.
load_plugin
(
plugin_name
)
plugin
.
setup
(
self
)
def
on_plugin_setup
(
self
,
plugin_class
):
name
=
getattr
(
plugin_class
,
'name'
,
plugin_class
.
__name__
)
self
.
tracer_map
[
name
.
lower
()]
=
plugin_class
def
plugin
(
self
,
name
):
return
self
.
tracer_map
.
get
(
name
,
None
)
def
create
(
self
,
tracer_type
,
tracer_config
,
span_decorator
=
None
,
**
kwargs
):
if
not
tracer_type
:
return
Tracer
()
plugin_class
=
self
.
plugin
(
tracer_type
.
lower
())
if
not
plugin_class
:
raise
RuntimeError
(
'Tracer Plugin
\'
{}
\'
not installed!'
.
format
(
tracer_type
))
tracer
=
plugin_class
.
create
(
tracer_config
,
span_decorator
=
span_decorator
,
**
kwargs
)
return
tracer
shards/tracer/plugins/jaeger_factory.py
0 → 100644
浏览文件 @
74429c90
import
logging
from
jaeger_client
import
Config
from
grpc_opentracing.grpcext
import
intercept_server
from
grpc_opentracing
import
open_tracing_server_interceptor
from
tracer
import
Tracer
logger
=
logging
.
getLogger
(
__name__
)
PLUGIN_NAME
=
__name__
class
JaegerFactory
:
name
=
'jaeger'
@
classmethod
def
create
(
cls
,
tracer_config
,
span_decorator
=
None
,
**
kwargs
):
tracing_config
=
tracer_config
.
TRACING_CONFIG
service_name
=
tracer_config
.
TRACING_SERVICE_NAME
validate
=
tracer_config
.
TRACING_VALIDATE
config
=
Config
(
config
=
tracing_config
,
service_name
=
service_name
,
validate
=
validate
)
tracer
=
config
.
initialize_tracer
()
tracer_interceptor
=
open_tracing_server_interceptor
(
tracer
,
log_payloads
=
tracer_config
.
TRACING_LOG_PAYLOAD
,
span_decorator
=
span_decorator
)
return
Tracer
(
tracer
,
tracer_interceptor
,
intercept_server
)
def
setup
(
app
):
logger
.
debug
(
'Plugin
\'
{}
\'
Installed In Package: {}'
.
format
(
PLUGIN_NAME
,
app
.
plugin_package_name
))
app
.
on_plugin_setup
(
JaegerFactory
)
shards/tracing/factory.py
已删除
100644 → 0
浏览文件 @
c73d1d83
import
logging
from
jaeger_client
import
Config
from
grpc_opentracing.grpcext
import
intercept_server
from
grpc_opentracing
import
open_tracing_server_interceptor
from
tracing
import
(
Tracer
,
empty_server_interceptor_decorator
)
logger
=
logging
.
getLogger
(
__name__
)
class
TracerFactory
:
@
classmethod
def
new_tracer
(
cls
,
tracer_type
,
tracer_config
,
span_decorator
=
None
,
**
kwargs
):
if
not
tracer_type
:
return
Tracer
()
config
=
tracer_config
.
TRACING_CONFIG
service_name
=
tracer_config
.
TRACING_SERVICE_NAME
validate
=
tracer_config
.
TRACING_VALIDATE
# if not tracer_type:
# tracer_type = 'jaeger'
# config = tracer_config.DEFAULT_TRACING_CONFIG
if
tracer_type
.
lower
()
==
'jaeger'
:
config
=
Config
(
config
=
config
,
service_name
=
service_name
,
validate
=
validate
)
tracer
=
config
.
initialize_tracer
()
tracer_interceptor
=
open_tracing_server_interceptor
(
tracer
,
log_payloads
=
tracer_config
.
TRACING_LOG_PAYLOAD
,
span_decorator
=
span_decorator
)
return
Tracer
(
tracer
,
tracer_interceptor
,
intercept_server
)
assert
False
,
'Unsupported tracer type: {}'
.
format
(
tracer_type
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录