Please enable JavaScript.
Coggle requires JavaScript to display documents.
xiaoying-opentracing-php (Trace(调用链)open-tracing协议 (Trace要实现的方法…
xiaoying-opentracing-php
Trace(调用链)
open-tracing协议
Span
因果关系
Root span(根节点)
ChildOf(父子)
FollowsFrom(跟随)
状态
operation Name(操作名称)-必填
start timestamp(起始时间)
finish timestamp(结束时间)
Span Tag(标签集合-键值对)-可选
键名(字符串)
键值(字符串\布尔\数字类型)
Span Log(日志集合-键值对、时间戳)-可选
键名(字符串)
键值(所有值类型)
SpanContext(上下文对象)
trace id
span id
References(Span间关系)-可选
ChildOf\FollowsFrom
span要实现的方法
getContext(获取上下文)
通过span获取SpanContext,唯一在finish后,可有效调用的方法
overwriteOperationName(复写操作名)
operation name(操作名)-必填
finish(结束span)
finishTime-可选
setTag(添加标签)
标准TAG
log(记录日志)
标准log的键名
addBaggageItem(设置随行数据元素)
getBaggageItem(获取随行数据元素)
Baggage Items(随行数据-键值对集合)
Trace要实现的方法
Extract(提取)-反序列化
format(格式)-必传
carrier(行李)-必传
按照format格式反序列spanContext,返回该spanContext实例,可以使用这个SpanContext实例,通过Tracer创建新的Span。
Inject(注入)-序列化
format(格式)-必传
Text Map
字符串的map,对于key和value不约束字符集
HTTP Headers
字符串的map。(RFC 7230.在工程实践中,如何处理HTTP头具有多样性,强烈建议tracer的使用者谨慎使用HTTP头的键值空间和转义符)
Binary
一个简单的二进制大对象,记录SpanContext的信息。
carrier(行李)-必传
按照format格式将spanContext序列化到carrier对象
SpanContext(实例)-必传
startSpan(开始/创建span)
flush(缓冲区)
允许tracer发送span数据给实现方,例如register_shutdown_function、fastcgi_finish_request
getActiveSpan(获取活跃的span)
NoopTracer(接口) - 提供空实现
open-tracing-php实现库
规范遵循(PSR-2,PSR-4)
GlobalTracer({final类} 全局Tracer类对象)
set方法(初始化Tracer对象)
get方法(获取当前单例模式的tracer对象)
NoopTracer({final类}Tracer空实现)
getActiveSpan方法()
getScopeManager方法()
create方法()
startSpan方法()
startActiveSpan方法()
inject方法()
extract方法()
flush方法()
NoopScopeManager({final类}ScopeManager空实现)
create方法()
activate方法()
getActiveSpan方法()
NoopSpan({final类}Span空实现)
create方法()
getOperationName方法()
getContext方法()
finish方法()
overwriteOperationName方法()
setTag方法()
log方法()
addBaggageItem方法()
getBaggageItem方法()
NoopSpanContext({final类}SpanContext空实现)
create方法()
getIterator方法()
getBaggageItem方法()
withBaggageItem方法()
ScopeManager({
interface类
}保持追踪当前的活跃span)
activate方法(激活span,追踪激活span队列)
getActiveScope方法(返回当前激活scope)
getScope方法(通过指定的span访问scope)
Scope接口(当前作用域)
close方法(关闭当前作用域的span)
getSpan方法(获取当前作用域的span)
Tracer({
interface类
})
getScopeManager方法(返回当前的ScopeManager)
getActiveSpan方法(返回当前的活跃span)
startActiveSpan方法(创建活跃span)
operationName-入参
options-入参
references
child_of
follows_from
start timestamp
tags
CloseSpanOnFinish
startSpan方法(创建span)
operationName-入参
options-入参
inject方法(注入)
spanContext-入参
format-入参
binary
text_map
http_headers
pb-
需要扩展的类型
carrier-入参
extract方法(提取)
format-入参
carrier-入参
flush方法()
SpanContext(
{interface类
})
getBaggageItem方法(返回baggage item的对应键值)
withBaggageItem方法(创建一个新的SpanContext)
SpanOptions({final类})
create方法(返回span open)
getReferences方法(获取因果关系)
getTags方法(获取tag)
getStartTime方法(获取开始时间)
getCloseSpanOnFinish方法(获取对应枚举值)
buildChildOf方法(建立父子因果)
buildReferences方法(建立引用对象)
Reference({final类})
create方法(创建引用对象)
getContext方法(获取spanContext)
isType方法(判断是否为指定类型的引用)
extractContext方法(提取spanContext)
Span(
{interface类
})
getOperationName方法(获取操作名)
getContext方法(获取spanContext)
finish方法(设置span的终态及结束时间)
overwriteOperationName方法(重写操作名)
setTag方法(添加tag到span)
OpenTracing\Tags
span.kind(基于RPC的调用角色)
client(客户端)
server(服务端)
producer(生产者)
consumer(消费者)
component(生成此Span所相关的软件包,框架,类库或模块)
sampling.priority(Tracer捕捉此调用链的优先级)
peer.service(远程服务名)
peer.hostname(远端主机名)
peer.address(远程地址)
peer.ipv4(远端 IPv4 地址)
peer.ipv6(远程 IPv6 地址)
peer.port( 远程端口)
http.url(被处理的trace片段锁对应的请求URL)
http.method(Span相关的HTTP请求方法)
http.status_code(Span相关的HTTP返回码)
db.instance(数据库实例名称)
db.statement(一个针对给定数据库类型的数据库访问语句)
db.type(数据库类型)
db.user(访问数据库的用户名)
message_bus.destination(消息投递或交换的地址)
error(设置为true,说明整个Span失败)
log方法(添加日志记录到span)
Log fields table
error.kind(错误类型)
error.object(异常对象实例本身)
event(Span生命周期中,特定时刻的标识)
message(事件描述)
stack(特定平台的栈信息描述)
addBaggageItem方法(添加baggage item到spanContext)
getBaggageItem方法(通过key获取baggage item中的值)