2016-10-09 2 views
0

Nous avons développé un service de serveur qui (en quelques mots) prend en charge les communications entre deux périphériques. Nous souhaitons tirer parti de l'évolutivité fournie par un ensemble d'échelles Azure (machine virtuelle multi-instance), mais nous ne sommes pas sûrs du partage de la mémoire entre chaque instance. Notre service stocke essentiellement des données temporaires dans la machine virtuelle locale et ces données sont lues, modifiées et envoyées aux périphériques connectés à ce serveur.Comment stocker des données temporaires dans une machine virtuelle Azure multi-instance (set d'échelle)?

Si ces données sont stockées localement dans l'une des instances, les autres instances ne peuvent pas accéder et n'ont pas les mêmes informations. Est-ce correct?

Si l'un des périphériques commence à envoyer une requête au serveur, l'instance qui va traiter la demande ne sera pas toujours la même, donc les données à la fin sont réparties entre les instances. Donc, la question pourrait être, comment partager la mémoire entre les instances Azure?

Merci

Répondre

0

En fonction du type de données que vous souhaitez partager et comment les choses beaucoup plus temps d'attente, ainsi que ServiceFabric (faible latence, mais vous devez re -architect/re-build bits de votre solution), vous pouvez regarder un référentiel back-end partagé - Redis Cache est idéal comme cache distribué; SQL Azure si vous souhaitez utiliser une relation db pour stocker les données; file d'attente de stockage/stockage blob - ou Stockage de fichiers dans un compte de stockage (cela vous permet d'écrire sur un lecteur réseau monté à partir des deux instances vm). DocumentDB est une autre option, qui convient au stockage des données JSON.

+0

L'utilisation d'une base de données ou d'un stockage de fichiers me semble abordable. Savez-vous s'il est possible de partager un disque entre plusieurs instances afin de pouvoir y accéder en tant que disque normal i.e/tmp/mountpount? – lcit

+0

Oui, c'est à peu près ce que les conteneurs de stockage de fichiers sont conçus. Notez que la performance/latence peut être un problème sur les comptes de stockage standard, vous pouvez vouloir valider et examiner les limitations. –

0

Vous pouvez utiliser Service Fabric et profiter de Reliable Collections avoir votre état répliqué automagiquement dans tous les cas.

De https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-services-reliable-collections/:

Les classes de l'espace de noms Microsoft.ServiceFabric.Data.Collections fournissent un ensemble de collections hors-the-box qui font automatiquement votre état hautement disponible. Les développeurs doivent programmer uniquement les API Reliable Collection et laisser les collections fiables gérer l'état répliqué et local. La principale différence entre les collections fiables et les autres technologies à haute disponibilité (telles que Redis, le service Azure Table et le service Azure Queue) est que l'état est conservé localement dans l'instance de service tout en étant hautement disponible. Des collections fiables peuvent être considérées comme l'évolution naturelle des classes System.Collections: un nouvel ensemble de collections conçues pour le cloud et les applications multi-ordinateurs sans augmenter la complexité pour le développeur. A ce titre, les collections fiables sont:

  • Répliquées: les modifications d'état sont répliquées pour une haute disponibilité. Persistance: Les données sont conservées sur le disque dur pour assurer leur durabilité contre les pannes à grande échelle (par exemple, panne d'alimentation du centre de données).
  • Asynchrone: les API sont asynchrones pour garantir que les threads ne sont pas bloqués lors de l'exécution d'E/S.
  • Transactionnel: les API utilisent l'abstraction des transactions pour vous permettre de gérer facilement plusieurs collections fiables au sein d'un service.

Travailler avec les collections fiables -
https://azure.microsoft.com/en-us/documentation/articles/service-fabric-work-with-reliable-collections/

+0

À première vue, cette solution semble assez complexe au moins pour le genre de tâche que je dois accomplir. Je suis à la recherche d'une solution plus C++/linux-ish comme monter un disque ou un blob partagé de mémoire. – lcit

+0

Si vous cherchez une approche plus IaaS-ish, pourquoi ne pas utiliser Azure File Storage? https://azure.microsoft.com/fr-fr/documentation/articles/storage-dotnet-how-to-use-files/ - Comme c'est SMB 2.1/3.0, ça marche bien avec Linux et BSD aussi. – evilSnobu