3

J'implémente une application Web client à fort trafic qui utilise beaucoup d'API REST pour sa couche d'accès aux données à partir de la base de données en nuage. J'ai dit client parce qu'il implémente REST et ne le fournit pas.Question d'architecture: solution de mise en cache de l'API REST du client

Les API REST sont implémentées côté serveur et côté client et j'ai besoin de trouver une bonne solution pour la mise en cache. L'application est en cours d'exécution sur une batterie de serveurs Web, donc je penche pour une mise en cache distribuée comme memcached. Cette solution de mise en cache devra être comme une couche proxy entre mon application et les API REST et supporter à la fois le côté client et le côté serveur. Par exemple, si je fais un appel pour mettre à jour un enregistrement je mettrais à jour via REST et je voudrais conserver l'enregistrement mis à jour dans le cache pour que les prochains appels à cet enregistrement n'aient pas besoin d'appel supplémentaire aux services REST externes. Je veux minimiser les appels REST autant que possible et je devrais garder les données aussi précises que possible, mais il n'a pas besoin d'être précis à 100%.

Quelle est la meilleure solution pour ce proxy de mise en cache? S'agit-il d'une application autonome qui s'exécute sur l'un des serveurs avec un cache local ou intégrée dans la solution actuelle à l'aide de la mise en cache distribuée? qu'est-ce que vous les idées, suggestions ou préoccupations

Thank you,

Répondre

4

Vous mettre le doigt dessus. Vous avez besoin d'une couche de mise en cache qui agit comme un proxy pour vos données.

Je vous suggère de créer une couche qui résume un peu le concept du nuage. Votre client ne devrait pas se préoccuper de l'origine des données. Je voudrais créer une couche de référentiel qui communique avec le nuage et toutes les autres données. Ensuite, vous pouvez ajouter une couche de service à votre client. À l'intérieur de cette couche de service est l'endroit où vous implémenter des choses comme votre couche de mise en cache.

Je suggérais toujours d'utiliser MemCached ou MemCached Win32 en fonction de votre environnement. MemCached Win32 fonctionne très bien si vous êtes dans un monde Windows! Regardez le client Enyim pour MemCached win32 ... c'est le moins problématique de tous les autres ports.

Si vous êtes ouvert à cela et que vous êtes dans un monde .net alors vous pouvez essayer Velocity. MS a enfin compris qu'il y avait un trou dans leur cadre de mise en cache, car ils devaient soutenir le concept de la ferme. Velocity dernière fois que j'ai vérifié n'est pas encore en version bêta ... mais ça vaut quand même le coup d'oeil.

Je suggère généralement d'utiliser les concepts du référentiel et de la couche de service dès le premier jour ... même si vous n'en avez pas besoin. La flexibilité qu'il offre à votre application vaut la peine d'avoir comme vous ne savez jamais dans quelle direction votre application devra être tirée. Avoir à l'échelle est généralement la meilleure raison d'avoir besoin de cette flexibilité. Mais généralement, lorsque vous avez besoin d'une mise à l'échelle, vous devez mettre à l'échelle maintenant et refactoriser dans une couche de référentiel et une couche de services alors que cela n'est pas impossible est généralement semi-complexe à faire sur la route.

+0

Merci pour votre contribution, comment ce calque serait-il consommé en taille client dans le navigateur avec javascript? – Sergey

+0

En règle générale, vous exposer des services Web à votre application à partir de votre application. Les services Web seraient la couche de présentation pour votre couche de services. jquery-> services web (renvoie json) -> services couche-> mise en cache-> référentiel-> etc ... –

+0

Merci Andrew. C'est vraiment beaucoup de travail puisque je dois abstraire toutes les API REST avec ma couche ... mais je ne vois pas d'autre moyen – Sergey

Questions connexes