-
Notifications
You must be signed in to change notification settings - Fork 18
Ratel features
This page provides a summary of functions provided by Ratel out of the box. Assume that you have a service provider:
@Publish
public class MyServiceImpl implements MyService {...
and the client working on some other machine that uses it:
public Class MyApp {
@Discover
private MyService serviceClient
With just that Ratel will build a system with:
Whenever you call a method of MyApp#sreviceClient, Ratel ensures that appropriate alive instance of MyService will be found and will route remote network calls to it, so that you don't need to care about address, livecycle or any other aspect of the service provider. If there is at least one working instance of MyService, your client will use it.
When you start multiple instances of service provider application, all clients will discover them all and will load-balance the traffic among multiple instances of MyService. You don't need to configure or implement anything.
If you need to horizontally scale MyService, all you need to do with ratel is to start additional service providers. On the start-up they register new instances of a MyService in the service registry and these addresses will be populated to all clients within seconds. Effectively, the clients will load-balance traffic to MyService over greater number of instances.
If a service is turned off or it fails, it will disappear from the registry server and this information will be populated to all clients within seconds. Effectively, clients will stop sending requests to this instance.
All instances of a service automatically get decorated with a Heart-beat proxy so that you can use external monitoring application to easily check responsiveness of any instance of any service.
By default all execution times of a service invocation both on client and server side are logged so that you can easily create e.g Splunk dashboard with various performance gauges. Additionally, you can extract in-depth monitoring report of your application with use of Monitoring events
Ratel introduces a notion of ProcessContext that is automatically passed along remote service calls. That is, when a client calls a remote Ratel service, all fields of Process context will be automatically bound to a ThreadLocal instance of Process context. For more information please refer to Process tracing