développement de serveurs Internet



Documents pareils
Architecture distribuée

Vulgarisation Java EE Java EE, c est quoi?

Solution A La Gestion Des Objets Java Pour Des Systèmes Embarqués

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Modélisation des interfaces matériel/logiciel

Limitations of the Playstation 3 for High Performance Cluster Computing

M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia

Sommaire. 3. Les grands principes de GFS L architecture L accès de fichier en lecture L accès de fichier en écriture Bilan

Prise en compte des ressources dans les composants logiciels parallèles

Tests de montée en charge & Haute disponibilité

La carte à puce. Jean-Philippe Babau

Cours en ligne Développement Java pour le web

Mesure et modélisation de l énergie logicielle

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Les Content Delivery Network (CDN)

«Clustering» et «Load balancing» avec Zope et ZEO

MEAD : temps réel et tolérance aux pannes pour CORBA

Mobile OGSI.NET: Grid Computing on Mobile Devices

Datalift. + + Architecture Modularité Déploiements. d j = 09/04/2015 Laurent BIHANIC

Sauvegarde des données au LAAS

Conception des systèmes répartis

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

SPECIFICATION ET DESCRIPTION DU MULTICAST FIABLE DANS ETOILE

CORBA haute performance

Environnements de développement (intégrés)

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Problèmes liés à la concurrence

Auto-évaluation Programmation en Java

NFP111 Systèmes et Applications Réparties

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Déploiement d une architecture Hadoop pour analyse de flux. françois-xavier.andreu@renater.fr

Plan du cours. Historique du langage Nouveautés de Java 7

Iyad Alshabani SysCom - CReSTIC Université de Reims 17/02/2011 1

Jean-Philippe Paquette

GPC Computer Science

Gestion collaborative de documents

JOnAS 5. Serveur d application d

Configuration Matérielle et Logicielle AGORA V2

Présentation Alfresco

JOnAS Day 5.1. Clustering

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

ETUDE ET IMPLÉMENTATION D UNE CACHE L2 POUR MOBICENTS JSLEE

Le serveur HTTPd WASD. Jean-François Piéronne

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

Évaluation et implémentation des langages

La Latecion protection anti-intrusion Web Web Le concept «Zero effort Security» La protection des applications Extranet

Formula Negator, Outil de négation de formule.

Détection d'intrusions en environnement haute performance

«clustering» et «load balancing» avec Zope et ZEO

Hébergement de site web Damien Nouvel

Programmation C. Apprendre à développer des programmes simples dans le langage C

2 disques en Raid 0,5 ou 10 SAS

Introduction : les processus. Introduction : les threads. Plan

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Architecture et Extensions d ArcGIS Server

Surveiller et contrôler vos applications à travers le Web

as Architecture des Systèmes d Information

Thème 3 Conception et vérification d architectures de systèmes sur puce

WEA Un Gérant d'objets Persistants pour des environnements distribués

Threads. Threads. USTL routier 1

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno

Dafoe Présentation de la plate-forme UIMA

Les technologies du Big Data

Machines virtuelles Cours 1 : Introduction

Recommandations techniques

Programmation d'applications sur PDA

Messagerie asynchrone et Services Web

Java - la plateforme

SQL Parser XML Xquery : Approche de détection des injections SQL

FTPS AVEC UNE APPLIANCE FAST360 EN COUPURE. Table des matières

LA RECONNAISSANCE VOCALE INTEGREE

Oracle Maximum Availability Architecture

Guide d installation JMap 5.0

Julien MATHEVET Alexandre BOISSY GSID 4. Rapport RE09. Load Balancing et migration

JOnAS Day 5.1. Outils de développements

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Environnements de développement (intégrés)

A. Architecture du serveur Tomcat 6

Etude de la pertinence et de l'intérêt des appliances WAF (IPS web) à l'inria

4. SERVICES WEB REST 46

FICHE PRODUIT 360 SPEECHMAGIC SDK

Programmation parallèle et distribuée

Application Web et J2EE

Apprentissage des performances, surveillance en temps réel et contrôle d admission d un serveur Web utilisant les techniques neuronales

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

RTDS G3. Emmanuel Gaudin

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

<Insert Picture Here> Solaris pour la base de donnés Oracle

Conception et réalisation d uned architecture tolérant les intrusions pour des serveurs Internet

Développement des Systèmes d Information

Rapport de Synthèse. Création d un Générateur de modèle PADL pour le langage C++ Sébastien Colladon

Projet de Veille Technologique

Gestion d Epargne de Crédit & Comptabilité

PG208, Projet n 3 : Serveur HTTP évolué

Contributions à l expérimentation sur les systèmes distribués de grande taille

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

UFR d Informatique. FORMATION MASTER Domaine SCIENCES, TECHNOLOGIE, SANTE Mention INFORMATIQUE

Transcription:

Un modèle génératif pour le développement de serveurs Internet Soutenance de thèse de l Université Paris-Est Gautier LOYAUTÉ Gautier.Loyaute@univ-mlv.fr 5 Septembre 2008 Laboratoire d Informatique Institut Gaspard-Monge, UMR8049

Les défis des serveurs sur Internet (1) De plus en plus de clients... Google : 250 millions de requêtes / jour (2000)... 1 milliard de requêtes / jour (actuellement) dont le nombre peut varier très brusquement. facteur 10 en 10 secondes pour les sites d informations en ligne!

Les défis des serveurs sur Internet (2) Pour des applications de plus en plus diverses... information en ligne (CNN, site d une université) payement en ligne (Amazon, Paypal) calcul haute performance (SETI) liste de diffusion et sur des matériels de plus en plus hétérogènes. serveur dédié (multi-processeur) routeur / box assistant personnel

Les besoins exprimés 1- Besoins d efficacité 2- Besoins de portabilité 3- Besoins de sûreté

Besoins d efficacité Les serveurs ont besoin de : monter en charge minimiser la latence maximiser la bande passante Entrelacer le traitement de plusieurs clients

Entrelacement du traitement de plusieurs clients Deux grandes philosophies : compétition coopération Les différentes techniques d entrelacement sont appelées modèles de concurrence. Pas de consensus sur le meilleur modèle de concurrence! Why Events are a Bad Idea (for High Concurrency Servers)? In Workshop on Hot Topics in Operating Systems, 2003. Why Threads Are a Bad Idea (for most purposes)? In USENIX Annual Technical Conference, 1996.

Besoins de portabilité Pas de consensus sur le meilleur modèle de concurrence! S adapter aux matériels / ressources disponibles... et aux besoins de l utilisateur. Abstraction vis-à-vis du modèle de concurrence!

Besoins de sûreté Plus vite une erreur est détectée, moins chère est sa correction! éviter les comportements non désirés... et les interblocages Utiliser des méthodes de vérification de logiciels complexité Abstraction vis-à-vis de l application à vérifier!

Objectif Outil pour assurer la conception et la construction de serveurs Internet performants, portables et sûrs! Idée Utiliser une abstraction unique qui est dédiée à un domaine spécifique!

Saburo http ://igm.univ-mlv.fr/ loyaute/project/saburo/

Saburo : Abstraction? Génération Modèle formel Vérification Spécification haut niveau Génération Serveur Internet Exécution

Spécification haut niveau de Saburo (1) Les besoins : indépendence vis-à-vis du modèle de concurrence transformation aisée vers un modèle formel facilité d apprentissage et d utilisation pour le développeur Les choix : utiliser une machine à états finie décomposer la spécification selon : la concurrence les E/S la logique offrir une API dédiée en Java

Spécification haut niveau de Saburo (2) Concurrence : six modèles de concurrence prédéfinis Graphe de communication : les synchronisations, les communications et la logique. Code métier : les stages suite d instructions en Java deux contraintes fortes! aucune synchronisation au plus une opération d E/S

Six modèles de concurrence prédéfinis E/S Bloquant Non bloquant SPED Multi-SPED SEDA Iteratif Multi-Processus Pipeline Processus Processus unique Mêmes rôles Rôles différents Compétition Coopération

Trois exemples de modèles de concurrence Modèle Itératif (1 seul processus, E/S bloquante) read service write Modèle Pipeline (Rôle différent, E/S bloquante) read service write Modèle SEDA (Rôle différent, E/S non bloquante) read service write

Exemple de graphe de communication accept read decode... Connexion des éléments du graphe (Ant) : <connect source= fr.umlv.saburo.core.stage.acceptstage sink= fr.umlv.saburo.core.stage.readstage /> <connect source= fr.umlv.saburo.core.stage.readstage sink= fr.umlv.saburo.samples.http.stage.decodestage />... Evénements de communication : public interface OutputAcceptEvent { public void setsaburosocket(saburosocket s); } public interface InputReadEvent { public SaburoSocket getsaburosocket() ; }

Le code métier : les stages Spécifiés par le développeur traitement fondamental du serveur (méthode handle()) langage Java Deux contraintes fortes aucune synchronisation au plus une opération d E/S Quelques stages fournis «sur étagères» acceptation d une nouvelle connexion réseau lecture sur une connexion réseau écriture sur une connexion réseau

Exemple d un stage fourni par Saburo @Initial public class AcceptStage { private SaburoServerSocket server ; public AcceptStage(Configuration conf) { server = conf.getsaburoserversocket( acceptstage.saburoserversocket ) ; } public void handle(stagecontext<outputacceptevent> ctx, OutputAcceptEvent out) { SaburoSocket client = server.accept() ; out.setsaburosocket(client) ; ctx.dispatchtosuccessor(out) ; } }

Les différents types de stage @Initial s 1 e 1 s 2 @Final s 1 e 1 s 2 @Stage s 1 e 1 s 2 e 1 s 3 @Collector s 1 e 1 s 2 e 2 s 3 e 1 e 2s4 @Combiner(E1 & E2) s 1 e 1 s 2 e 2 s 3 e 1 &e 2s4 @Multicaster s 1 e 1 s 2 e 1 s 3 e 1 s4 @Router(E1->S3) s 1 e 1 s 2 e 1 s 3 s 4

Saburo : le processus de génération Modèle de concurrence + Graphe + Stages Spécification haut niveau Génération Génération Modèle formel Serveur Internet (en Java) Vérification Exécuté JVM

La phase de génération (1) Contexte selon le modèle de concurrence utilisé pour envoyer les événements de sortie compétition : appels de fonction coopération : files locales implanté comme un décorateur Boucle principale selon le modèle de concurrence mécanisme de sélection dans le cas d E/S non bloquante while(true) selector.doselect() ; Génération du code des événements selon les interfaces des événements

La phase de génération (2) Wrapper : code exécuté avant le stage Context : code exécuté après le stage accept context wrapper read context wrapper decode context

La phase de génération (3) Stages Annotation API StageWrapper Ant Concurrence Graphe GenWrapper GenContext Annotation des stages StageContext GenMain Serveur main(...) GenEvent Evénements Evénement Développeur Saburo Code généré

Saburo : le processus de vérification Modèle de concurrence + Graphe + Stages Spécification haut niveau Génération Génération Spécification en Promela Serveur Internet (en Java) Interprétée Exécuté SPIN JVM

SPIN : un vérificateur de modèle http ://spinroot.com/spin/whatispin.html Langage de spécification : Promela Modèle sémantique basé sur un automate fini Vérification d un ensemble de propriétés basiques : interblocages états inatteignables Utilisation de formules de logiques temporelles

Génération du modèle formel (1) Spécification du graphe en Promela patrons prédéfinis pour chaque type de stage exemple : un stage «collecteur» s 1 e 1 s c 3 s 3 2 e 2 e 1 e 2 c 4 s 4 s1 : c3!e1 ; s2 : c3!e2 ; s3 : c3?e; c4!e; s4 : c4?e; Le modèle de concurrence un patron pour chaque modèle prédéfini

Génération du modèle formel (2) Stages Annotation Patrons stages Graphe GenPromela Promela Concurrence Développeur Saburo Patrons concurrence Code généré

Propriétés vérifiées par défaut les états inateignables l absence d interblocages Vérification avec SPIN Vérification de formules de logique temporelle (requete == (reponse + erreur)) Si un client se connecte au serveur, il reçoit une réponse ou une erreur. Certaines propriétés sont vraies pour un modèle mais peuvent être fausses pour un autre!

Simulation avec SPIN

Limitations lors de la vérification L abstraction que l on vérifie doit être bornée! explosion du nombre d états du système On vérifie un «sous-système»! Le code des stages n est pas sûre! le développeur doit respecter le modèle de développement risque de contenir des erreurs non vérifiées On peut améliorer la sûreté de certains stages!

Sûreté et portabilité du décodage de requêtes

Décodage des requêtes Les protocoles de communication sont définis via des RFCs Le décodage d une requête peut être formalisée sous forme de grammaire formelle : partie lexicale : les «mots» partie syntaxique : les «phrases» partie sémantique : le «sens» Intêrets des grammaires : facilite la portabilité augmente la sûreté

Problématique (rappel) Besoins d efficacité embarquement dans un serveur! Besoins de portabilité indépendant du modèle de concurrence Besoins de sûreté respect du protocole Génération automatique d analyseur syntaxique embarqué

Analyseur embarqué Les besoins : éviter les fuites mémoires minimiser l empreinte mémoire s abstraire vis-à-vis du type des E/S Les choix : utilisation de viviers d objets table d analyse partagée Méthode «push» d analyse de texte : OS Octets Buffer Octets Lexer A l époque, aucun générateur d analyseur syntaxique ne répondait à ces besoins!

Tatoo : un nouveau générateur d analyseur syntaxique http ://tatoo.univ-mlv.fr/ Besoins exprimés dans les spécifications de développement de Tatoo Utilisation de Tatoo : spécification du langage à analyser (sous forme EBNF) génération des analyseurs lexical et syntaxique implantation de la sémantique

Performance de Saburo et Tatoo : Banzaï

Banzaï (1) Une extension du modèle SEDA : lecture écriture lecture écriture Ordonnanceur lecture Ordonnanceur écriture

Banzaï (2) Un principe simple : Favorisé l itératif! 1 Essayer de faire les lectures/écritures dans le processus courant. 2 Si ce n est pas possible, délégation à un processus dédié. 3 Si ce n est toujours pas possible, enregistrement auprès d un sélecteur.

Environnement matériel des tests Serveur Switch Client PIV bi-proc 2Go Ram Gigabit PIV bi-proc 2Go Ram Pages Internet statiques (taille variant de 4Ko à 1Mo)

Environnement logiciel des tests Serveurs en comparaison : Apache httpd Grizzly Tomcat Jetty Banzaï Beaucoup de fonctionnalités... mais le contexte des tests est homogène Les pages sont situées dans le cache du serveur!

Variation du nombre de requêtes par seconde en fonction du nombre de clients avec ApacheBench (HTTP/1.0) 35000 30000 Apache httpd Grizzly Banzai Jetty Tomcat 25000 Requetes/seconde 20000 15000 10000 5000 0 1 4 16 64 256 1024 4096 16384 Nombre de clients

Variation du nombre de requêtes par seconde en fonction du nombre de clients avec Httperf (HTTP/1.1) 7000 6000 Apache httpd Grizzly Banzai Jetty Tomcat 5000 Requetes/seconde 4000 3000 2000 1000 0 1 4 16 64 256 1024 4096 16384 Nombre de clients

Analyses des résultats obtenus Banzaï à des performances similaires aux autres serveurs! Mais Banzaï est généré automatiquement... et les autres sont écrits à la main. Le code généré automatiquement peut être aussi performant que le code manuel!

Conclusion : Une fabrique de serveurs Internet (Saburo) La génération automatique de la concurrence et des E/S A framework for development of concurrency and I/O in servers, EuroSys 2006. Saburo : A Tool for I/O and Concurrency Management in Servers, JPDC 2006. Multi-SPED : A new Internet server architecture, EuroSys 2007. La vérification automatique des serveurs produits A Java Method for the Design and the Automatic Checking of Server Architectures, PPPJ 2007. La génération automatique du décodage des requêtes Banzaï : A Java Framework for the Implementation of High-Performance Servers, Soumis à SAC 2009.

Perspectives Compléter l implantation Générer automatiquement l encodage des réponses Transformer pour d autres outils de vérification Transformer les générateurs en compilateurs Adapter automatiquement le modèle de concurrence