STRING: Social-Transaction Routing over a Ring
Résumé
A key requirement for social applications is to support fluid interactions among users. Basically, social applications deal with user-oriented data: users own their data and may access or modify data owned by others (say their friends). Therefore, several users may focus simultaneously on a small piece of data (hot data) owned by the same user. Such a situation, more known as a net effect, has the drawback to generate temporal peak loads able to slow user interactions. Moreover, a social application inherently generates multi-node (or multi-partition) transactions as far as users interact between them.
Based on those observations, we propose String, a transaction scheduling layer that uses various strategies to order (or group) transactions based on their access classes. String reduces significantly the overhead cost of processing one transaction at a time while allowing to process rare multi-nodes transactions in en efficient way. The key novelties lie in (1) our distributed transaction scheduling devised on top of a ring to ease communication and (2) our ability to absorb peak loads as early as possible by splitting the transaction processing in two phases: a scheduling phase, resilient to peak load, followed by a group execution phase. We designed and simulated String using SimJava and we ran a series of experiments. Compared with some existing solutions, String shows interesting and promising results.