Título: Cache aware load balancing for scaling of multi-tier architectures
Autores: Tickoo, Neeraj
Fecha: 2011
Publicador: McGill University - MCGILL
Fuente:
Tipo: Electronic Thesis or Dissertation
Tema: Applied Sciences - Computer Science
Descripción: To keep pace with the increasing user base and resulting processing requirements, enterprise and e-commerce applications need constant innovation in their application design and system architecture. Scalability and availability are the basic principles that must be adhered to by the businesses if they want to retain and expand their customer base. The most popular design which provides for both availability and scalability is when the application tier is replicated. In it, all the application servers share a single database, and to prevent the database from becoming the bottleneck in a high volume scenario, caching layers are deployed in each application server. By serving requests from the local cache instead of going to the database, response times are reduced and the load at the database is kept low. Thus, caching is a critical component of such architectures. In this thesis, we focus on object caches at the application tier, which cache Java EE entities. Our target applications are e-commerce applications which are database driven and are resource intensive. In this thesis we design a cache aware load balancing solution which makes effective usage of the caching layer. This results in a more scalable application tier of a multi-tier architecture. Most of the load balancing solutions present in literature are cache agnostic when making the dispatching decision. Example solutions like round-robin cause duplication of the same cache content across all the application servers. In contrast, we present a cache aware load balancing algorithm, which make best possible effort to prevent the duplication of cached entries across the different caches in the cluster, enabling us to make a more efficient usage of cache space available to us. This in turn, results in less cache evictions. We also extend our cache aware load balancing algorithm to take into account the dynamic nature of the application server cluster where the nodes can come up and shutdown as the system is running. The evaluation of our implementation shows improvements in response time and throughput of a well known e-commerce benchmark compared to existing strategies.
Afin de suivre le rythme croissant d'utilisateurs ainsi que les demandes de traitements résultants, les applications entreprise et de commerce électronique ont besoin d'innovations régulières dans leur conception et architecture. L'extensibilité ainsi que la disponibilité sont primordiales pour tout type d'affaires ayant intérêt à garder, voir même étendre, leur clientèle. L'architecture la plus populaire qui fournit en même temps l'extensibilité et la disponibilité est celle pour laquelle le serveur d'applications est répliqué. Une architecture au niveau de laquelle les serveurs d'applications partagent une seule base de données et chacun d'entre eux utilise des couches de cache afin de réduire la charge sur la base de données. En servant les requêtes à partir du cache local, au lieu de les servir à partir de la base données, les temps de réponses sont réduits et la charge de traitement de la base de données est maintenue à un bas niveau. Ainsi, la mise en cache est une composante critique pour ce type d'architectures. Dans cette thèse, on se concentre sur la mise en case d'objets au niveau du serveur d'applications, qui met en cache des entités Java EE. On vise principalement les applications de commerce électroniques qui sont basées sur les bases de données et qui demandent assez de ressources. Dans cette thèse, nous concevons une solution de balancement de la charge qui tient en compte la mise en cache, ce qui rend l'utilisation de la couche du cache assez effective. Ceci résulte en un serveur d'applications assez extensible pour les architectures multi-tier. La plupart des solutions de balancement de la charge ne tiennent pas en compte la mise en cache lors de la distribution de leur requêtes. Par exemple des solutions comme le round-robin entraînent la duplication du même contenu du cache à travers tous les serveurs d'applications. En revanche, nous présentons un algorithme de balancement de la charge qui tient en compte la mise en cache et qui fait de son mieux pour éviter la duplication des entrées mises en cache à travers tous les caches distribués. Ceci nous permet d'utiliser d'une façon efficace l'espace de cache disponible et de réduire le nombre d'expulsions d'entités à partir du cache. Au niveau de notre algorithme de distribution de la charge, et qui tient en compte la mise en cache, nous prenons en considération le nombre dynamique des applications serveurs. En fait, lors de l'exécution d'un système réel, les noeuds de serveurs peuvent joindre ou quitter le système à n'importe quel moment. L'évaluation de notre implémentation montre des améliorations en terme de temps de réponse et de débit de requêtes pour un benchmark bien connu, comparativement à des stratégies existantes.
Idioma: en