J'ai un petit microservice Java (Java EE), qui effectue quelques calculs. Ce microservice s'exécute sur le même serveur d'applications que les autres applications, également écrites en Java EE. Première question - ces applications doivent-elles communiquer entre elles via l'API REST ou d'une manière différente? Deuxième question - si oui, existe-t-il un moyen de gagner du temps en ne sérialisant / désérialisant pas les objets de transfert? Je comprends que la communication entre deux applications sur différents serveurs (langues) nécessite une sérialisation / désérialisation, mais qu'en est-il de la situation mentionnée?

3
xaepe 6 avril 2017 à 13:22

2 réponses

Meilleure réponse

ces applications doivent-elles communiquer entre elles via l'API REST ou d'une manière différente?

Les microservices doivent toujours communiquer sur le réseau. S'ils ont une API REST, utilisez-la.

si oui, existe-t-il un moyen de gagner du temps en ne sérialisant / désérialisant pas les objets de transfert?

S'ils communiquent sur le réseau, la sérialisation est indispensable. Quoi qu'il en soit, la sérialisation aide au découplage. Les microservices doivent partager des données mais pas des schémas / classes. La sérialisation doit être effectuée en perdant le schéma, c'est-à-dire que vous pouvez utiliser JSON. Si vous partagez le schéma (les classes), vous interrompez l'encapsulation du microservice. Vous ne pourrez pas modifier une implémentation de microservice avec une autre implémentation (qui utilise une pile technologique différente, PHP avec Nginx par exemple).

3
Constantin Galbenu 6 avril 2017 à 15:39

Si l'efficacité est primordiale, vous pouvez utiliser Protobuf de Google. C'est un peu pénible (par rapport à json) mais très efficace. Il est également indépendant du langage (ou pour être plus précis: il a des implémentations dans la plupart des langages courants).

Vous définissez essentiellement un message selon la spécification proto, puis un compilateur spécial génère le code get / set approprié. vous l'utilisez dans votre code pour envoyer et recevoir des messages très efficaces.

1
FuzzyAmi 6 avril 2017 à 12:45