BT

Sortie de MBrace 1.0, Framework de programmation distribuée pour .Net

| par Pierre-Luc Maheu Suivre 4 Abonnés , traduit par Julien Delhomme Suivre 1 Abonnés le 16 déc. 2015. Durée de lecture estimée: 2 minutes |

Après plusieurs années de développement, MBrace 1.0 est sorti mi-novembre. MBrace est un modèle permettant de traiter de façon scalable des données sur le Cloud via des environnements de développement ou de scripting en F# et C#. Le projet est principalement constitué de librairies et de runtimes pour différents fournisseurs de Cloud. Le composant central est MBrace.Core, une librairie autonome contenant le coeur du modèle de programmation de MBrace. Celui-ci fournit une API s’appuyant sur des "computations expressions" pouvant être utilisées soit directement, soit pour créer des libraires telles que MBrace.Flow. L’exemple suivant, qui utilise la "computation expression" cloud, montre comment récupérer un contenu distant via HTTP.

let urls =  [| ("bing""http://bing.com") ("google""http://google.com"/* more urls*/ |]

let download (name: string, uri: string= 
    cloud {
        let webClient = new WebClient()
        let! text = webClient.AsyncDownloadString(Uri(uri)) |> Cloud.OfAsync
        do! CloudFile.Delete(sprintf "pages/%s.html" name)
        let! file = CloudFile.WriteAllText(path = sprintf "pages/%s.html" name, text = text)
        return file
    }

let filesTask = 
    urls  |> Array.map download  |> Cloud.Parallel |> cluster.CreateProcess

Construit en s’appuyant sur MBrace.Core, MBrace.Flow est une librairie permettant de réaliser du streaming distribué via des déclarations de pipelines fonctionnels. L’exemple suivant montre comment déterminer le nombre de chaînes de caractères dupliquées à l’intérieur de fichiers CVS en utilisant des flux Cloud.

let numberOfDuplicates =
    CloudFlow.OfCloudFilesByLine ["container/data0.csv" ; "container/data1.csv"]
    |> CloudFlow.map (fun line -> line.Split(','))
    |> CloudFlow.map (fun tokens -> int tokens.[0], Array.map int tokens.[1 ..])
    |> CloudFlow.groupBy (fun (id,_) -> id)
    |> CloudFlow.filter (fun (_,values) -> Seq.length values > 1)
    |> CloudFlow.length
    |> cluster.Run

A côté des libraires, les autres composants majeurs sont les implémentations du runtime MBrace. Azure est actuellement le seul fournisseur complètement supporté, mais AWS est en cours de développement. L’implémentation du runtime pour Azure inclut le modèle de programmation MBrace complet et des utilitaires pour la gestion des clusters. On peut voir ci-dessous comment créer un cluster de quatre instances A3 sur Azure :

let pubSettingsFile = @"... path to your downloaded publication settings file ... "
let config = DeploymentManager.BeginDeploy(pubSettingsFile, Regions.North_EuropeVMSizes.A3, vmCount = 4)

Pour commencer à développer, deux kits de démarrage sont disponibles : l’un utilise Azure, l’autre une émulation de cluster. Ce dernier, pouvant s’exécuter sur une machine unique, permet d’exécuter et de débugger du code distribué depuis une machine de développement sans besoin d’infrastructure additionnelle. MBrace est un projet open source disponible sur GitHub. Il est possible de contribuer à différents niveaux : librairies, cloud providers et documentations/exemples.

Evaluer cet article

Pertinence
Style

Bonjour étranger!

Vous devez créer un compte InfoQ ou cliquez sur pour déposer des commentaires. Mais il y a bien d'autres avantages à s'enregistrer.

Tirez le meilleur d'InfoQ

Donnez-nous votre avis

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet
Commentaires de la Communauté

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Html autorisé: a,b,br,blockquote,i,li,pre,u,ul,p

M'envoyer un email pour toute réponse à l'un de mes messages dans ce sujet

Discuter

Se connecter à InfoQ pour interagir sur ce qui vous importe le plus.


Récupérer votre mot de passe

Follow

Suivre vos sujets et éditeurs favoris

Bref aperçu des points saillants de l'industrie et sur le site.

Like

More signal, less noise

Créez votre propre flux en choisissant les sujets que vous souhaitez lire et les éditeurs dont vous désirez suivre les nouvelles.

Notifications

Restez à jour

Paramétrez vos notifications et ne ratez pas le contenu qui vous importe

BT