@Deprecated
    public Topology getEndpointTopology(final Duration duration,
                                        final String endpointId) throws IOException {
        List<Call.CallDetail> serverSideCalls = getTopologyQueryDAO().loadEndpointRelation(
            duration, endpointId);

        Topology topology = new Topology();
        serverSideCalls.forEach(callDetail -> {
            Call call = new Call();
            call.setId(callDetail.getId());
            call.setSource(callDetail.getSource());
            call.setTarget(callDetail.getTarget());
            call.addDetectPoint(DetectPoint.SERVER);
            topology.getCalls().add(call);
        });

        Set<String> nodeIds = new HashSet<>();
        serverSideCalls.forEach(call -> {
            if (!nodeIds.contains(call.getSource())) {
                topology.getNodes().add(buildEndpointNode(call.getSource()));
                nodeIds.add(call.getSource());
            }
            if (!nodeIds.contains(call.getTarget())) {
                topology.getNodes().add(buildEndpointNode(call.getTarget()));
                nodeIds.add(call.getTarget());
            }
        });

        return topology;
    }
The topology built above is complete.
There is a special case, there may be a node of the `serviceIds` call these services as and only as a client, so it is included in the topology,
its component name could be missed as not being queried before. We add another query about this.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TopologyQueryService.java