Introduction to Batched Remote Method Invocation (BRMI)
BRMI is an extension of RMI that provides programming abstractions
and runtime support for invoking multiple remote methods in a batch style. At the client end, BRMI uses a new kind of proxy for objects involved in a batch. Operations on these proxies are recorded and method results returned as futures. When the client calls an explicit flush method, the batch is executed on the server and the results are assigned to the futures. The server has to be extended to execute batches and return multiple results to the client during one connection.
Using BRMI decreases the number of network round trips required to invoke multiple remote methods, which greatly reduce the impact of the latency problem on Java RMI programs. Our own benchmark shows that BRMI achieves several orders of magnitude performance increase over RMI for most common scenarios upon distributed computing. A comparison between legacy RMI and BRMI can be shown as below.
Any number of remote calls on many remote objects can be combined into one batch as long as their execution not depending on local object or return value of local methods. This enables each client to optimize its own pattern of method invocation, without changing server configurations. Furthermore, BRMI is implemented as a layer on top of Java RMI, without changes to the Java language or runtime. So it can be used on any platform supporting standard Java.
Details of this work has been submitted to ICDCS’ 2009.