ambiguous-pointer opened a new pull request, #1460:
URL: https://github.com/apache/dubbo-admin/pull/1460
This change introduces a complete service and application topology
visualization feature based on
[discussion #1398](https://github.com/apache/dubbo-admin/discussions/1398)
and
[issue #1430](https://github.com/apache/dubbo-admin/issues/1430).
It adds both backend graph APIs and frontend AntV G6 visualization for
tracing upstream/downstream
relationships via `ServiceProviderMetadataResource` and
`ServiceConsumerMetadataResource`.
---
## ๐ Whatโs New
* **Application-level topology graph**
`GET /application/graph` returns provider/consumer application relations
as typed nodes
and edges. Each node declares its `type` (`application`) and `rule`
(`provider`/`consumer`/empty).
* **Service-level topology graph**
`GET /service/graph` returns provider/consumer applications for a given
service as a graph.
A central `service` node is connected to provider and consumer app nodes.
* **Service detail API**
`GET /service/detail` returns aggregated service metadata (language,
method names) derived
from all provider instances sharing the same `serviceKey`.
* **Service resource derivation**
`ServiceProviderMetadataEventSubscriber` now maintains `Service`
resources by aggregating
methods from all provider instances. Language is auto-detected from
provider metadata
parameters and method type signatures (golang/java).
* **Graph payload structure**
```json
{
"code": "Success",
"message": "success",
"data": {
"nodes": [
{
"id": "order-service",
"label": "order-service",
"type": "application",
"rule": "provider"
},
{
"id": "com.ecommerce.api.service.OrderService::",
"label": "com.ecommerce.api.service.OrderService::",
"type": "service",
"rule": ""
},
{
"id": "payment-service",
"label": "payment-service",
"type": "application",
"rule": "consumer"
}
],
"edges": [
{
"source": "com.ecommerce.api.service.OrderService::",
"target": "order-service",
"data": { "type": "provides" }
},
{
"source": "payment-service",
"target": "com.ecommerce.api.service.OrderService::",
"data": { "type": "consumes" }
}
]
}
}
- Frontend topology visualization
New Topology tab components for both Applications and Services pages,
rendered using AntV G6
with Vue-node integration. Clicking a node opens a detail drawer.
- New indexes for efficient queries
- idx_service_consumer_service_key on ServiceConsumerMetadataKind
- idx_service_name on ServiceKind
- Service proto simplification
Service.{providers,consumers,features} replaced with a single methods
[]string field,
derived by aggregating method names from all provider instances.
---
๐ Affected Areas / Review Checklist
- Console API (service package handlers)
- User Experience (graph visualization output)
- Core Component (discovery subscriber, indexers)
- Docs
- Dubboctl
- Feature
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]