SOFARPC provides point-to-point service call between apps, and is characterized by high scalability and fault tolerance.
To ensure high availability, multiple instances of the same app or service provider are deployed for peer services. SOFARPC is capable of software load balancing, and serves as the peer service call scheduler to help a service consumer properly choose one of the peer service providers to execute the associated business logic.
To ensure high fault tolerance of apps, the service consumer needs to be aware of exceptions on the service provider side and take proper measures to reduce the service call jitter caused by app errors. In SOFARPC, the fault tolerance mechanism for all service calls is controlled by SLB and configuration center. This helps the service consumer choose a healthy service provider without being perceived by apps, thereby ensuring the stability of the whole system.
Remote calls in SOFARPC use a service model to define the two parties involved in a service call. That is, the service consumer and service provider can be considered as the client and server, respectively. For an RPC service, the service provider is called “service”, and the service consumer is called “reference”.
The following is a simple flow chart for service publishing, reference, and call.
- During the startup of an app, if SOFARPC detects that the app needs to publish an RPC service, it registers the service to the Config Server, as shown by the blue solid lines.
- When an SOFA app reference the service, it sends a request to the Config Server to subscribe the addresses of the server provider.
- After receiving the request, the Config Server notifies the address list of publishers to the subscriber.
- After obtaining the address list, the subscriber can invoke the services provided by the publisher.