First, if your business is not very large, the service is a single deployment, then your service address can be hard-coded into your project, but if your service is not able to handle the traffic concurrency and even poor performance, then we need a distributed deployment of our services.
At first we realized this way.
Whether you go to an old-fashioned ESB, or some proxy server, you first call the request to another server and then transfer it to the service provider.
Now, how do we do that?
The Note:soa architecture provides a Client.dll that gives the caller the ability to make the caller do not have to relate to how your transport protocol is implemented and how the load algorithm is implemented, which can be configured. Then the service on each line of a machine, will automatically register the interface address and other information to the Service Configuration Center, service monitoring system will be in a timely manner to capture the status of each service, and then update storage, the client has built-in load balancing and caching functions, according to the monitoring system to provide data, client configuration information, Find the best service to the client. However all this is released on the client side. No third-party proxy server appears.
How to implement the second kind??
Talking about service routing, service load balancing and service de-centering structure