Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ruote final

ruote final

An old private deck from 2011, made public in 2017

John Mettraux

January 01, 2011
Tweet

More Decks by John Mettraux

Other Decks in Programming

Transcript

  1. Storage storages ‣ Ruote::HashStorage ‣ Ruote::FsStorage ‣ Ruote::Dm::Storage ‣ Ruote::Sequel::Storage

    ‣ Ruote::Redis::Storage ‣ Ruote::Mon::Storage ‣ Ruote::Couch::Storage
  2. ‣ what db will your application use ? ‣ what

    db is your administrator comfortable with ? Storage
  3. storages ‣ Ruote::HashStorage ‣ Ruote::FsStorage ‣ Ruote::Dm::Storage ‣ Ruote::Sequel::Storage ‣

    Ruote::Redis::Storage ‣ Ruote::Mon::Storage ‣ Ruote::Couch::Storage Storage
  4. A Global Interpreter Lock (GIL) is a mutual exclusion lock

    held by a programming language interpreter thread to avoid sharing code that is not thread-safe with other threads. In languages with a GIL, there is always one GIL for each interpreter process. CPython and CRuby use GILs. Applications written in programming languages with a GIL can be designed to use separate processes to achieve full concurrency, as each process has its own interpreter and in turn has its own GIL. Otherwise, the GIL can be a significant barrier to concurrency—a price paid for having the dynamism of the language. http://en.wikipedia.org/wiki/Global_Interpreter_Lock
  5. webserver main thread request thread request thread request thread ruote

    worker main thread dispatch thread dispatch thread ruby process
  6. evading the GIL ‣ event loop (event machine) ‣ patched

    rubies (ree) ‣ jruby, rubinius (no gil) ‣ multiple ruby processes
  7. evading the GIL ‣ event loop (event machine) ‣ patched

    rubies (ree) ‣ jruby, rubinius (no gil) ‣ multiple ruby processes ‣ more memory, more power
  8. expression flow expression id Dashboard • cancel(wfid_or_fei) • kill(wfid_or_fei) •

    pause/resume(wfid_or_fei) • replay_at_error(err) • re_apply(fei) • cancel process • cancel part of a process • pause/resume process • pause/resume part of a process • unblock a process in error • modify a process on the fly