Backend resolution is the association of a backend (through identity) to node or tier.
Problem
In the traditional way of handling flow maps, it is shown that the upstream tier connects directly to downstream tier when it makes an exit call. If the Service Proxy is present in between them, controller is unable to identify the Service Proxy as a backend.
The inaccurate identification of the backend component causes the system to periodically change the association of the single backend with one of the potential target downstream tiers to which the Service Proxy could route. This results in an incorrect flowmap with the wrong metrics.
Solution
A Service Proxy is marked as a backend and shown on the flow map. This Service Proxy ensures that the requests from the upstream tiers to the downstream tiers are displayed accurately. The metrics are reported accurately and shown in such a way that the metrics tally between the tiers.
In the following figure, it is illustrated that 192.168.1.9 backend is identified as Service Proxy and requests coming from tier11 will be routed to tier21 and tier22 via this Service Proxy. Also it distributes the metrics (call/min) accurately between tier21 and tier22 which is 8 and 7 respectively. This collectively is equal to 15 which is the same as upstream metric.

Once the Service Proxy is marked as backend, re-resolution stops.
How the Backend Resolution Works for Python Agent?
The backend resolution works when the backend.detect.loadbalancer.enabled
and backend.detect.urimisconfig.enabled
flags are set to true on the controller. Once the flags are set, if the backend switches between the tiers only then the backend is marked as a Service Proxy. All the upstream agents are informed that a backend is marked as a Service Proxy. But only those versions of agents that support the Service Proxy feature start reporting the metrics to the controller.
After the Controller identifies a Service Proxy for the Backend Resolution, the Python Agent gets the information that a Service Proxy has been detected and the agent sends the right metric to the controller. The upstream agent version should also support the Service Proxy feature for this to work as designed. If the agent is not upgraded, then the Service Proxy is not detected and the backend is reverted as a normal backend and the Controller will function with the previous behavior.
Therefore, it is recommended that a compatible agent is used in the Backend resolution.
Enable the Service Proxy
The Service Proxy detection is enabled on the Controller by setting the backend.detect.loadbalancer.enabled
and backend.detect.urimisconfig.enabled
flags. For more information, see Service Proxy Overview.