Maison > Questions et réponses > le corps du texte
Nous avons maintenant besoin d'un programme d'écriture de fichiers multi-processus
Si vous écrivez directement, vous devez vous assurer que le processus verrouille le descripteur de fichier
Maintenant, je souhaite enregistrer un service d'écriture singleton jusqu'au printemps
Lorsque plusieurs programmes écrivent des fichiers, ils demandent à l'interface Spring d'écrire des fichiers
Cette solution est-elle réalisable ?
Ou utiliser un service RPC singleton ?
Une seule instance peut garantir que lors de l'écriture d'un fichier, il s'agit d'une instance, évitant ainsi les problèmes de synchronisation multi-thread et multi-processus !
ringa_lee2017-05-17 10:03:08
Je pense que ce n'est toujours pas possible, Spring ne gère les instances que pour vous, et vous devez toujours résoudre vous-même le problème de la sécurité des threads
.De plus, vous parlez d'écrire des fichiers via plusieurs processus. RPC n'est qu'une méthode multi-thread, n'est-ce pas ?
En fait, l'essentiel est d'implémenter une interface d'écriture de fichiers thread-safe. Singleton est OK, utilisez simplement votre propre instance comme verrou
.習慣沉默2017-05-17 10:03:08
En utilisant zookeeper, une caractéristique de zookepper est qu'un seul client (processus) peut écrire avec succès sur le même znode. Utilisez ce client pour écrire des fichiers, ou utilisez la base de données pour écrire la même clé primaire. Un seul peut insérer avec succès
.