2017-05-30 1 views
0

Nous avons différents microservices qui effectuent des appels en double vers des services internes et externes. Nous devons mettre en cache ces appels entre les services pour améliorer la latence. Nous envisageons d'introduire une passerelle API dont l'objectif principal serait la mise en cache des données entre les services. Certains autres objectifs sont -Caching Couche pour différents microservices

i) Appelleraient différents micro-services pour agréger leur réponse. Ii) éviterait également de multiples appels à des services externes à travers les micro-services. Iii) prendrait en charge la mise en cache & pour les appels API externes. Iv) Haut débit, performance et faible temps de latence.

Nous avons une pile technologique basée sur vert.x. Quelle serait la meilleure façon de mettre en œuvre un tel système. J'ai eu des questions suivantes -

1) L'implémenter comme une bibliothèque ou un service?

2) Quel magasin de données utiliser (nous considérons Redis/Hazelcast)?

3) Les bibliothèques telles que Varnish/Squid/Nginx peuvent-elles aider ici?

4) Comment gérer l'invalidation du cache?

+0

"Comment gérer l'invalidation du cache?" - Vous devriez commencer par cette question –

+0

"Les bibliothèques telles que Varnish/Squid/Nginx peuvent aider ici" - ce sont des serveurs, pas des bibliothèques –

+0

Si votre objectif principal est la mise en cache, pourquoi ne pas utiliser EHCache alors? –

Répondre

0

Je pense que vous avez beaucoup d'options:

  1. Redis
  2. Redis Sentinel (de regroupement de soutien)
  3. ETCD (de CoreOS): Support Clustering
  4. Apache Geode
  5. aérospike: regroupement de soutien même entre centres de données

an d nombreux produits commerciaux comme SAP HANA.

note: Aerospike est gratuit, mais pour le regroupement entre les centres de données, je pense que vous devriez payer.

J'ai moi-même utilisé ETCD pour les mêmes scénarios (merci à Brandon Philips).