Blocking Operations, Exceptions, and Logging in Asynchronous Servers
By Doug Hoyte (fractal) from Toronto.pm
Date: Tuesday, 24 June 2014 09:30
Duration: 20 minutes
Target audience: Intermediate
Language: English
Tags: anyevent async asynchronous events exceptions logging operations
You can find more information on the speaker's site:
This talk is about lessons learned while designing, building, and operating asynchronous servers. Instead of focusing on the concepts of async programming and the benefits it provides in terms of performance and determinism, we'll discuss the problems that inevitably come up.
Although not the only solutions to these problems, this talk describes three modules that your users, other developers, and operations team will appreciate:
AnyEvent::Task -- Doing any sort of blocking operation in an async server will ruin your performance. AnyEvent::Task is a pre-forked worker-pool implementation that lets your async program safely and efficiently perform any sort of blocking operation, including CPU-bound tasks.
Callback::Frame -- Exception handling is notoriously difficult in async servers. Callback::Frame unifies the various error-handling techniques used by different async libraries and even lets you do the right thing when exceptions are thrown in AnyEvent::Task worker processes.
Log::Defer -- Because in async servers you can't use process or thread IDs to follow a connection's progress, log files are often jumbled and confusing. Log::Defer implements an async-friendly style of logging known as structured logging that also supports timing data collection, flexible queries, and the log-defer-viz visualisation tool.
- Richard Farr
- Adam Prime (jsut)
- Matt Phillips (mattp)
- Curtis Jewell (CSJewell)
- Graham Ollis (plicease)
- Dmitri Tikhonov (dmitri)
- Steve Nolte (mcsnolte)
- Arthur Schmidt (fREW)
- Joe Kline (gizmo)
- Russel Fisher (Fish)
- Wallace Reis (wreis)
- Jay Allen (jayallen)
- Erik Johansen (uniejo)
- Thomas Glase
- Ricardo Signes (rjbs)
- Brendan Byrd (SineSwiper)
- Rish
- John Lightsey (J.D.)
- Joshua Goodman
- Larry Leszczynski (larryl)
- Joe Zhou
- theFu
- morgan jones
- ali roozitalab
- vroom
- Gary Denslow
- Francis Sola (Hank)
- David Farrell (dnmfarrell)
- Turd Furgison (fartfart)
- Nikolay Martynov
- John Anderson (genehack)
- Gabriel Munoz (gabriel)
- Maximilian Witte
- Mike Greb (mikegrb)
- atoomic
- Bruce Gray (Util)
- Stan Schwertly (stan_theman)
- Tim Bunce
- Brian Brandes
- Doug Hoyte (fractal)
- Lonny Jepson
- Kenneth Smith
- Kevin Falcone (jibsheet)
- jerry gay (particle)
- Christopher Eades (Chro)
- Chip Salzenberg (Chip)
- Kaushik Acharya
- benny Vasquez
- brian carlson
- Christopher Stith (mr_mischief)
- NdFeB
- Tom Green (Tom)
- Jack Stitta
- Nicholas Jackson
- AndyB
- Kevin Olson
- Deven Corzine (deven)
- Scott O'Neil
- D Ruth Bavousett (druthb)
- Ken Beyer
- Leo Chan (K)
- James E Keenan (kid51)
- Michael Allard (Gronk)
- Rikus Goodell
- (Samuel) Kurt Newman
- Dan Muey
- Charles McGarvey (CCM)
- Jeffrey Tomsak (Jeff)