Fluo Tour: Observer Concepts

Tour page 17 of 26

Fluo supports complex processing by running user provided code in Observers. Observers are triggered by notifications. An Observer requests that the system run it when a certain column is modified. When another transaction modifies an observed column, it will persist a notification that later causes the Observer to run. 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 >