SlideShare une entreprise Scribd logo
1  sur  23
Distribuirano
     delo
  z Djangom
            Jernej Virag



   Jernej Virag | @jernejv | http://www.virag.si   1
Problemi

           Strežniki so počasni
                               Hudo počasni. Res. Zelo.




Distribuirano delo z Djangom                              2
Problemi

                     Več strežnikov
                Več strežnikov za različna heterogena opravila




Distribuirano delo z Djangom                                     3
Rešitev

                        MQ strežniki
               Drugi jeziki in infrastrukture to poznajo že lep čas




Distribuirano delo z Djangom                                          4
Rešitev

                        MQ strežniki
               Drugi jeziki in infrastrukture to poznajo že lep čas




Distribuirano delo z Djangom                                          5
Rešitev
                                MQ strežnik   Workers
D
 j
 a
                                              Workers
 n
 g
 o
                                              Workers




Distribuirano delo z Djangom                       6
Problem

                        Python + MQ




Distribuirano delo z Djangom             7
BeanstalkD
•   Prioritete
•   Binarna shramba
•   Preprost tekstovni protokol
•   Ni odvisnosti
•   Hiter

• Hroščat
Distribuirano delo z Djangom                8
BeanstalkD

          Tekstovna sporočila
            Preprosto pošiljanje in sprejemanje – JSON, YAML itd.




Distribuirano delo z Djangom                                        9
BeanstalkD

„Cevi“ – posamezne vrste
                Zelo light-weight, možno delanje z večimi hkrati




Distribuirano delo z Djangom                                       10
BeanstalkD

    beanstalkc za knjižnico
                                  Je „ok“.




Distribuirano delo z Djangom                 11
BeanstalkD - task


     PUT                   čaka   RESERVE   procesira   DELETE




Distribuirano delo z Djangom                                     12
BeanstalkD - task




Distribuirano delo z Djangom        13
BeanstalkD - task




Distribuirano delo z Djangom        14
BeanstalkD - task
  PUT-DELAY
                          DELAYED



        PUT                            RESERVE               DELETE
                               READY              RESERVED

                                       RELEASE
                        KICK

                                                 BURY
                           BURIED




Distribuirano delo z Djangom                                      15
BeanstalkD - tubes
• .tubes()

• .use(tube) / .using()

• .watch(tube) / .watching()
• .ignore(tube)

Distribuirano delo z Djangom      16
BeanstalkD

                   Kontrola napak
               Nastavljanje TTR, avtomatsko vračanje v vrsto, …




Distribuirano delo z Djangom                                      17
Pozor

        Stabilnost beanstalkd
                Beanstalkc zganja paniko če beanstalkd zgine




Distribuirano delo z Djangom                                   18
Pozor

Privzet je in-memory store
               Za trajno shranjevanje sporočil je treba podati -b




Distribuirano delo z Djangom                                        19
Pozor

        Ciklanje pri napakah
     Prestrezite vse exceptione drugače se zgodijo GrdeStvari™




Distribuirano delo z Djangom                                     20
Pozor

                               Varnost
              Ni avtentikacije, enkripcije in ostalih mehanizmov




Distribuirano delo z Djangom                                       21
Pozor

                                Hrošči
                         https://github.com/kr/beanstalkd
                        https://github.com/earl/beanstalkc




Distribuirano delo z Djangom                                 22
?
                                  Jernej Virag
                                     @jernejv
                               http://www.virag.si




Distribuirano delo z Djangom                         23

Contenu connexe

Plus de Jernej Virag

Plus de Jernej Virag (8)

PSPDFKit on Android
PSPDFKit on AndroidPSPDFKit on Android
PSPDFKit on Android
 
Python simillar image search
Python simillar image searchPython simillar image search
Python simillar image search
 
Solr
SolrSolr
Solr
 
From Doom to Crysis
From Doom to CrysisFrom Doom to Crysis
From Doom to Crysis
 
Ip security
Ip securityIp security
Ip security
 
Java stereams
Java stereamsJava stereams
Java stereams
 
Pretty good privacy
Pretty good privacyPretty good privacy
Pretty good privacy
 
Jni – java native interface
Jni – java native interfaceJni – java native interface
Jni – java native interface
 

BeanstalkD Queues in Django

  • 1. Distribuirano delo z Djangom Jernej Virag Jernej Virag | @jernejv | http://www.virag.si 1
  • 2. Problemi Strežniki so počasni Hudo počasni. Res. Zelo. Distribuirano delo z Djangom 2
  • 3. Problemi Več strežnikov Več strežnikov za različna heterogena opravila Distribuirano delo z Djangom 3
  • 4. Rešitev MQ strežniki Drugi jeziki in infrastrukture to poznajo že lep čas Distribuirano delo z Djangom 4
  • 5. Rešitev MQ strežniki Drugi jeziki in infrastrukture to poznajo že lep čas Distribuirano delo z Djangom 5
  • 6. Rešitev MQ strežnik Workers D j a Workers n g o Workers Distribuirano delo z Djangom 6
  • 7. Problem Python + MQ Distribuirano delo z Djangom 7
  • 8. BeanstalkD • Prioritete • Binarna shramba • Preprost tekstovni protokol • Ni odvisnosti • Hiter • Hroščat Distribuirano delo z Djangom 8
  • 9. BeanstalkD Tekstovna sporočila Preprosto pošiljanje in sprejemanje – JSON, YAML itd. Distribuirano delo z Djangom 9
  • 10. BeanstalkD „Cevi“ – posamezne vrste Zelo light-weight, možno delanje z večimi hkrati Distribuirano delo z Djangom 10
  • 11. BeanstalkD beanstalkc za knjižnico Je „ok“. Distribuirano delo z Djangom 11
  • 12. BeanstalkD - task PUT čaka RESERVE procesira DELETE Distribuirano delo z Djangom 12
  • 13. BeanstalkD - task Distribuirano delo z Djangom 13
  • 14. BeanstalkD - task Distribuirano delo z Djangom 14
  • 15. BeanstalkD - task PUT-DELAY DELAYED PUT RESERVE DELETE READY RESERVED RELEASE KICK BURY BURIED Distribuirano delo z Djangom 15
  • 16. BeanstalkD - tubes • .tubes() • .use(tube) / .using() • .watch(tube) / .watching() • .ignore(tube) Distribuirano delo z Djangom 16
  • 17. BeanstalkD Kontrola napak Nastavljanje TTR, avtomatsko vračanje v vrsto, … Distribuirano delo z Djangom 17
  • 18. Pozor Stabilnost beanstalkd Beanstalkc zganja paniko če beanstalkd zgine Distribuirano delo z Djangom 18
  • 19. Pozor Privzet je in-memory store Za trajno shranjevanje sporočil je treba podati -b Distribuirano delo z Djangom 19
  • 20. Pozor Ciklanje pri napakah Prestrezite vse exceptione drugače se zgodijo GrdeStvari™ Distribuirano delo z Djangom 20
  • 21. Pozor Varnost Ni avtentikacije, enkripcije in ostalih mehanizmov Distribuirano delo z Djangom 21
  • 22. Pozor Hrošči https://github.com/kr/beanstalkd https://github.com/earl/beanstalkc Distribuirano delo z Djangom 22
  • 23. ? Jernej Virag @jernejv http://www.virag.si Distribuirano delo z Djangom 23