Fluo Tour: Observer Concepts

Tour page 17 of 26

Fluo supports incremental processing with Observers and Notifications. Notifications are persistent markers set by a transaction that indicate an Observer should run later for a certain row+column. Observers are user provided code that are registered to process notifications for a certain column. When an Observer is run, its provided with the row and column that caused it to run along with a transaction. Fluo worker processes running across a cluster will execute Observers.

Since all transactions need to know which columns trigger Observers, Observers must be registered with Fluo at initialization time.

Fluo supports two type of notifications :

  • Strong notifications: guarantee an observer will run at most once when a column is modified. If multiple transactions modify an observed row+column before an observer runs, it will only run once. It will not run once for each modification.
  • Weak notifications: cause an observer to run at least once. Observers may run multiple times and/or concurrently based on a single weak notification. In order to guarantee strong notifications run an observer at most once, strong notifications are part of the transaction model. Therefore a strong notification can cause transaction collisions. Weak notifications are not transactional and will not cause collisions. Therefore in situations where many transactions are notifying a row+column concurrently, using weak notifications is best.

< 17 / 26 >