背景
产出系统拓扑图,改图中可以展示出系统全貌,如下图所示
思路
系统拓扑图本质上是一个“图”,所以需要定义node节点以及edge边缘,使其成为一个“图”,同时node和edge的信息,可以去perf埋点的存储中获取。
给出一下定义node以及edge的数据结构
{
"node":[
{
"id":"服务节点名",
"service":"可选-服务名",
"label":"",
"owner":"",
"type":"类型"
}
],
"edges":[
{
"id":0,
"source":"sourceId",
"target":"targetId"
}
]
}
- node中的id的作用就是去perf中获取该节点的监控信息;
- edge中的source和target也是去perf中获取该节点的监控信息;
但是需要注意的是,rpc接口中可能会存在一台机器上存在多个service服务。而我们求的调用关系是api->service中。我们实际上关注的是调用某个service,而不是该机器上所有的服务。