AccueilActualités informatiqueServerless : Stateful Functions 3.2 introduit un nouveau SDK JavaScript

Serverless : Stateful Functions 3.2 introduit un nouveau SDK JavaScript

La communauté Apache-Flink a annoncé la sortie de Stateful Functions 3.2. La pile multiplateforme Stateful Functions (StateFun) vise à simplifier la création d’applications stateful distribuées en combinant le framework de traitement de flux Apache Flink avec des concepts de Function-as-a-Service (FaaS). Il comprend un runtime conçu pour les architectures serverless qui s’appuie sur Apache Flink et peut être utilisé sur différentes architectures telles que les déploiements cloud-natifs ou les plateformes FaaS comme AWS Lambda et KNative.

Stateful Functions, tout comme Apache Flink, provient de la maison Ververica (anciennement data Artisans) et a été présenté pour la première fois en octobre 2019. La nouvelle version apporte un SDK JavaScript pour Node.js et permet pour la première fois de créer des métriques sur mesure sous forme de compteurs personnalisés.

Sommaire

La pile open source Stateful Functions doit offrir un modèle uniforme pour créer des applications stateful – à travers différents langages de programmation et environnements de déploiement. Jusqu’à présent, des SDK pour Python, Java et Go étaient embarqués. La version 3.2 apporte en plus un SDK JavaScript pour Node.js. Il s’installe via npm (npm install [email protected]) et contient, tout comme les autres SDK, une manière unifiée et translinguistique d’envoyer, de recevoir et de stocker des valeurs.

La documentation du SDK JavaScript montre un exemple d’application d’une Stateful Function. Une Stateful Function est une fonction quelconque ayant un context– et un message-paramètre. Dans l’exemple, la Stateful Function sert à gérer un compteur pour chaque utilisateur d’une application et à émettre un message d’accueil défini par l’utilisateur :

const {messageBuilder, StateFun, Context} = require("apache-flink-statefun");

let statefun = new StateFun();

statefun.bind({
    typename: "com.example.fns/greeter",
    fn(context, message) {
        const name = message.asString();
        let seen = context.storage.seen || 0;
        seen = seen + 1;
        context.storage.seen = seen;
        
        context.send(
            messageBuilder({typename: 'com.example.fns/inbox',
                            id: name,
                            value: `"Hello ${name} for the ${seen}th time!`})
        );
    },
    specs: [{
        name: "seen",
        type: StateFun.intType(),
    }
    ]
});

Parmi les autres modifications apportées à Stateful Functions 3.2, citons la nouvelle option de configuration statefun.remote.module-namequi peut remplacer le nom de fichier par défaut du module distant module.yaml. Par exemple, pour attribuer le nouveau nom de fichier prod.yaml, qui se trouve dans /flink/usrlib/prod.yaml, il faut entrer ce qui suit dans le fichier flink-conf.yaml :

statefun.remote.module-name: /flink/usrlib/prod.yaml

De plus, la dépendance à Apache Flink 1.14.3 a augmenté, une récente mise à jour de correction de bugs pour la version 1.14 du framework de traitement de flux. Pour se familiariser avec les Stateful Functions, le Apache Flink Stateful Functions Playground est disponible avec des exemples et des tutoriels.

Toutes les autres informations concernant Stateful Functions 3.2 sont disponibles dans l’annonce.

Plus d'articles