1 / 39

Le parallélisme

Le parallélisme. le parallélisme les accès concurrents le verrouillage des données Les cadenas Chapitre 12 du manuel de référence. Le parallélisme en Java. Gérer via les fils d’exécution « threads » Un fil d’exécution est un traitement indépendant

kellan
Télécharger la présentation

Le parallélisme

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Le parallélisme • le parallélisme • les accès concurrents • le verrouillage des données • Les cadenas • Chapitre 12 du manuel de référence Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas1

  2. Le parallélisme en Java • Gérer via les fils d’exécution • « threads » • Un fil d’exécution est un traitement indépendant • Utilisé quand un autre traitement puet se faire dans les temps morts • Accès disque • Réflexion de l’utilisateur • Délai réseau Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas2

  3. Exemple class ThreadDemo extends Thread{ private String name; public ThreadDemo(String name) { this.name = name; } public void run() { int count = 100; while (count>0) { count--; .. Thread.sleep(100); System.out.println(“Thread “+name); .. } }} Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas3

  4. Démarrer un fil d’exécution ThreadDemo thA = new ThreadDemo(“Thread A”); ThreadDemo thB = new ThreadDemo(“Thread B”); ThreadDemo thC = new ThreadDemo(“Thread C”); thA.start(); thB.start(); thC.start(); Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas4

  5. Objets partagés • Quand 2 Threads travaillent en même temps sur les mêmes données • interfèrent l’une avec l’autre • Résultent en des données inconsistentes • Plusieurs solutions Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas5

  6. Synchronised • Un seul fil d’exécution à la fois • Un seul fil a la “main” dans un objet synchronisé Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas6

  7. Utiliser synchronised (i) class IntTest { private int value; public IntTest(int value) { this.value = value; } public synchronized void increment() { value++; } Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas7

  8. Utiliser synchronised(ii) public synchronized void decrement() { value—-; } } Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas8

  9. Autre solution • Wait et Notify • Wait • Relâcher l’exécution • Donner la main à un autre fil d’exécution • Notify • Informer au moins un Thread que des conditions ou des variables globales ont changées Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas9

  10. Dans un système client-serveur, les clients accèdent en parallèle aux données centrales Habituellement, ces données sont conservées dans un système de base données plutôt que dans la mémoire D’où le besoin de gestion de la concurrence Le parallélisme distribué Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas10

  11. Modèles de gestion de la concurrence • Basé sur le concept des cadenas de lecture et/d’écriture • Plusieurs lecteurs/un seul écrivain à la fois Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas11

  12. Cadenas/lecture/écriture Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas12

  13. Une transaction d’affaire peut lire et modifier plusieurs enregistrements Dans une même table Dans plusieurs tables Dans plusieurs bases de données sur un même serveur Sur plusieurs serveurs de base de données Logique d’affaire Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas13

  14. Le graphe de l’étreinte fatale T1 attend T3 T1 T3 T2 Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas14

  15. Plusieurs niveaux de cadenas • Enregistrement • Page • Table • Base de données au complet Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas15

  16. Diverses stratégie du cadenas • Les SGBD permettent plusieurs formes de gestion des cadenas de la base de données • Cela permet de troquer • Performance • versus • Moment d’exécution de l’accès concurrent Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas16

  17. Trois problèmes • Lecture sale (“dirty reads”) • A transaction reads data written by concurrent uncommitted transaction. • Lecture non-rejouable (“non-repeatable reads”) • A transaction re-reads data it has previously read and finds that data has been modified by another transaction (that committed since the initial read). • Lecture fantome ( “phantom read”) • A transaction re-executes a query returning a set of rows that satisfy a search condition and finds that the set of rows satisfying the condition has changed due to another recently-committed transaction. Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas17

  18. Quatre grande stratégie d’isolation • 4 niveaux d’isolation définis par le standard SQL • Read uncommited • Lire les données, même les données modifiées en cours de transactions • Read commited • Ne lire que les données commises • Read repeatable • Proche du Cursor Stability (CS) • L’ensemble des données lues sont cadenassées jusqu’à ce que la transaction atteigne un « commit » • Une relecture dans une même transaction donne exactement les mêmes résultats • Serializable • Sérialise l’exécution des transactions • L’ensemble des tables accédées par une transaction sont cadenasées Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas18

  19. Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas19

  20. Les transactions - Chapitre 13 du manuel de référence Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas20

  21. Une transaction typique • Un client commande un item • Le système vérifie que l’item est disponible • Si l’item est disponible, alors l’item est affecté à ce client et le total d’items disponible est décrémenté de un. • Si le total de l’item est bas, alors placer une commande pour recommander cet item Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas21

  22. Un exemple de transaction • Commander de nouveau chèque. • Simple! • Regardez1. the database for the account management website has to be updated (system web). usually the database is not the accounting database.2. an entry must be made in the electronic fund transfer database (system eft). 1 for withdrawing money from customer account, 1 for transfer to checking processing company, 1 for service charge to the bank3. an entry must be made in the accounting database (system M)4. an entry must be made in the transaction validation database (system DW)5. an entry must be made in the data warehousing database6. a call to the check processing system (system CP) must be made. if the system is down, the transaction has to be saved and processed in a batch later.7. a entry must be made for the customers account info in system CP8. an entry must be made for a new order in system CP9. the order number returned by system CP must be saved to system Web, EFT and M. Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas22

  23. Une transaction • I'll be even more specific with the scenario. How would you solve this problem.1. 5 different systems. some are not in your control2. each transaction requires multiple insert/updates to each system3. a transaction must not be committed, if the transaction log fails. ie, an insert to the transaction log database fails. therefore, if 3 inserts are performed with the same connection, you can't just rollback all three. 4. some database tables have triggers, which rely on data in other tables. therefore, some inserts are dependent on other inserts and sequence is critical5. the transaction has to finish within 30 seconds6. the systems are remote7. the commit threshold depends on the context of each transaction, and therefore varies significantly. Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas23

  24. ACID • Propriétés désirées d’une transaction: • Atomicity, Consistency, Isolation et Durability • Atomique, Consistant, Isolé et Durable • Atomique • Une transaction doit être atomique, faite au complet ou aucunement faite • Consistente • Une transaction doit en tout temps laisser les données persistantes dans un état cohérent, par exemple une transaction de débit-crédit • Isolation • Une transaction ne doit pas être affectée par les autres transactions • Durable • Après la transaction, ses effets sont permanents et durables dans la base de données Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas24

  25. Niveaux de complexité • Élémentaire: • transaction sur une table • Sur une base de donnée • Plusieurs tables • Sur un serveur applicatif, J2EE • Avec les composants J2EE d’affaires • Des sous-systèmes de communications asynchrones: JMS • Sur plusieurs systèmes Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas25

  26. Ressources • Gourmandes en ressources • Connexions BD • Lock • Etc… • Temps Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas26

  27. Transactions • Courtes • Rapide • Synchrone • Sous le contrôle du système • Longues • Interventions externes • Asynchrones • Avec un système de communications asynchrones • Longues en temps Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas27

  28. Transactions distribués • Utiles pour 2 raisons • Elles permettent plus de concurrence entre des systèmes différents • Elles permettent plus de flexibilités dans les politiques d’annulation des transactions Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas28

  29. Protocole d’engagement en 2 phases • Two phase commit protocols • Protocole standard pour maintenir les propriétés ACID • Gère quant une transaction doit être annulée ou poursuivie • Basé sur le vote • Peut être utilisé pour les transactions imbriquées Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas29

  30. Début de transaction pour tous • Modifications aux données sur les différents systèmes • Fin du travail • Vote-Veto (Go/Nogo) • Retour arrière ou fin transaction Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas30

  31. Règles de contrôle dans les transactions imbriquées • Les transactions parentes ne peuvent pas s’exécuter en même temps que les transactions enfants • Les enfants vont hériter des cadenas de leur parent • Si une transaction imbriquée veut un cadenas de lecture, alors il est accordé seulement si les détenteurs des cadenas d’écriture sont des ancêtres • Si une transaction imbriquée veut un cadenas d’écriture, alors il est accordé seulement si les détenteurs des cadenas sont des ancêtres Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas31

  32. Règles de contrôle dans les transactions imbriquées • Quand une transaction fait le commit, alors tous les cadenas sont transmis à son parent • Quand une transaction termine abruptement, alors tous ses cadenas sont enlevés Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas32

  33. Étreinte fatale distribuée • Quand il y a une contention sur une ressource commune au travers d’un système distribué • Prendre un serveur central pour résoudre les étreinte fatale n’est pas pratique • Les meilleurs modèles de solutions se font en passant des messages sur le réseau Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas33

  34. An edge chasing algorithm (i) When a server detects that a transaction T1 has started waiting for another transaction T2 it sends an item of data T1T2, known as a probe, to the server which contains the data item which is blocking T2. If there are a number of transactions sharing the lock then the probe is also sent to them. Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas34

  35. An edge chasing algorithm (ii) When a server receives a probe T1T2 it checks whether T2 is waiting for another transaction, say T3. If it is then the probe is augmented to be T1T2T3 and if T3 is waiting it is forwarded on to the server which holds the data that it is waiting for. Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas35

  36. An edge chasing algorithm (iii) When a server receives a probe and attempts to augment it, it will check for cycles. For example if a probe is T1T2T3T4 and an attempt is made to augment the probe with T2 to form T1T2T3T4T2 and form a cycle then a potential deadlock can be detected. When the deadlock is detected one of the transactions in the probe is aborted. Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas36

  37. Les moniteurs transactionnels • Logiciels qui mettent en place les propriétés ACID des transactions • Gère aussi le contrôle du parallélisme des transactions • Ont été développé depuis l’époque des ordinateurs centraux • Cachent aux programmeurs plein de détails pointus Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas37

  38. CICS, un exemple • IBM • Démarre, gère et termine les fils d’exécution • Gère les ressources matérielles et logicielles • Récupère les transactions qui échouent • Partage la charge de travail entre plusieurs ressources • Gère les disfonctionnements, autant matériel que logiciel Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas38

  39. Java Transaction Architecture - JTA • Standard Java pour les appels à un service de gestion de transaction • Habituellement fait automatiquement par les appels SQL ou les EJB • Peut être programmé manuellement • Une grande diversité d’implémentations • Référence • http://www.developer.com/java/ent/article.php/2224921 • http://www.theserverside.com/resources/article.jsp?l=Nuts-and-Bolts-of-Transaction-Processing • http://java.sun.com/products/jta Section 5: Le parallélisme, les accès concurrents, le verrouillage des données et les cadenas39

More Related