Service REST avec équilibrage de la charge
J'ai été pris en compte les avantages de REPOS des services, l'ensemble de l'apatridie et de l'affinité de session "trucs". Ce qui me frappe, c'est que si vous avez déployé plusieurs versions de vos service sur un nombre de machines dans votre infrastructure, et ils agissent tous sur une ressource donnée, où est l'état de la ressource stockée?
Serait-il judicieux d'avoir un seul hôte du infrastructre qui utilise un cache distribué, et tout état qui est à l'intérieur d'un service, il suffit simplement de les extractions/met en cache? Cela permettrait à un certain nombre de services déployés pour le chargement de l'équilibrage des raisons à la même affichages d'état des ressources.
L'apatridie n'est pas spécifique au REPOS. Que voulez-vous dire à propos de "l'affinité de session"?
OriginalL'auteur Martin Blore | 2009-09-03
Vous devez vous connecter pour publier un commentaire.
Si vous êtes à la conception d'un système de charge élevée (ce qui implique généralement une haute fiabilité), ayant un point unique de défaillance n'est jamais une bonne idée. Si le service de fourniture de la vue cohérente descend, au mieux vos performances diminue de façon drastique la base de données est interrogée pour tout et au pire, l'ensemble de votre demande arrêts de travail.
Dans votre question, vous semblez être inquiet au sujet de la cohérence. Si il y a quelque chose à apprendre sur eBay architecture, c'est qu'il y a un un compromis doit être fait entre la disponibilité de l'/redondance/performances et la cohérence. Vous pouvez trouver à 100% de la cohérence n'est pas nécessaire et vous pouvez vous en sortir avec un peu de "chaos".
Un cache distribué (comme memcache) peut être utilisé comme un support pour une table de hachage distribuée qui ont été largement utilisés pour créer évolutive des infrastructures. Si elles sont appliquées correctement, les caches peuvent être redondants et les caches peuvent rejoindre et quitter le ring de façon dynamique.
RESTE est aussi intrinsèquement cache HTTP couche peut être mis en cache avec l'utilisation appropriée des en-têtes (ETags) et des logiciels (par exemple, proxy Squid comme un Proxy inverse). Le seul inconvénient de la spécification de la mise en cache par les en-têtes, c'est qu'il s'appuie sur le client en interprétant et en les respectant.
Cependant, pour paraphraser Phil Karlton, la mise en cache est dur. Vous avez vraiment d'être sélectif sur les données qui vous cache, lorsque vous en cache et comment vous disqualifier la cache. Invalider peut être effectué de la façon suivante:
Je suis partie à la minuterie approche fondée sur sa plus simple à mettre en œuvre et vous pouvez dire avec certitude relative combien de temps des données périmées vivent dans le système (par exemple, les coordonnées de l'Entreprise sera mis à jour en 2 heures, le prix des Actions sera mis à jour dans les 10 secondes).
Enfin, le niveau élevé de la charge dépend aussi de votre cas d'utilisation et fonction de la quantité de transactions rien de tout cela peuvent s'appliquer. Une méthodologie (si vous voulez) peut être la suivante:
Après tout, vous ne pouvez pas avoir un problème de performance, en premier lieu, et vous pouvez vous en sortir avec une seule base de données et un bon stratégie.
OriginalL'auteur Richard Nienaber
Je pense que la vision plus traditionnelle de l'équilibrage de charge des applications web est que vous pouvez avoir votre REPOS de service sur plusieurs serveurs d'application et ils serait de récupérer les données de la ressource de base de données unique serveur.
Cependant, avec l'utilisation de l'hypermédia, RESTE services peut facilement à la verticale de la partition de l'application, de sorte que certaines ressources proviennent d'un service et d'un autre service sur un serveur différent. Cela vous permettrait d'échelle, dans une certaine mesure, en fonction de votre domaine, sans avoir une seule banque de données. Évidemment, avec le REPOS que vous ne serait pas en mesure de faire les mises à jour transactionnelles à travers de ces services, mais il ya certainement des scénarios où cette partition est précieux.
Si vous êtes à la recherche à des architectures qui doivent vraiment à l'échelle puis-je suggère de regarder à Greg Young choses sur CQS Architecture (vidéo) avant de tenter de résoudre les problèmes de cache distribué.
OriginalL'auteur Darrel Miller