0

Je développe un moteur de balayage de données Web en utilisant Service Fabric. J'ai divisé un processus d'exploration en pipeline de services sans état. Le premier service charge le code HTML. (S1) La seconde analyse les données de celle-ci. (S2) Le troisième enregistre le résultat dans la base de données et effectue des opérations supplémentaires. (S3) Le code HTML passe de S1 à S2, plutôt qu'à S3 (de par sa conception, j'ai besoin de HTML en troisième service). Le problème que HTML lui-même est une grande quantité de données et je suis obligé de mettreLe déplacement de données volumineuses entre les services Service Fabric est-il un anti-modèle?

[assembly: FabricTransportServiceRemotingProvider(MaxMessageSize = 1073741824)] 

Cette conception est un antimodèle? Dois-je effectuer tout le travail avec HTML à l'intérieur du service singe?

Répondre

3

Il y a toujours un coût de bande passante + latence en cas de division d'une seule tâche entre plusieurs services. Parce qu'il y a un coût, vous avez besoin d'une bonne raison de le faire. Vous ne semblez pas en avoir un, ou du moins vous n'en avez pas mentionné un.

Faire des problèmes sans raison valable est un anti-pattern.

Si vous avez avez une bonne raison de diviser ce travail en services, alors peut-être vous pouvez justifier le coût de l'envoi de tout ce HTML autour. Cependant, il est plus probable que vous devriez choisir une décomposition de service différente qui ne l'exige pas.

1

Un bon design s'accompagne toujours d'une bonne compréhension des données et des besoins. Y a-t-il des dépendances entre S1, S2, S3, S4? S'il y a besoin de services distincts.

Y a-t-il des dépendances entre les services et le code HTML? Ce HTML sera-t-il modifié et, s'il change, entraînera la mise à jour de plusieurs services?

Il y a-t-il un coût d'E/S pour ce que vous faites? Combien de temps vous avez passé à transmettre et combien de temps prend votre processus.