Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added headings for diagrams.

...

Kafka is still in the picture to handle overload scenarios (see Invoker Activation Queueing Change).

General dependencies between components

draw.io Diagram
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNamearch
simpleViewerfalse
width
diagramWidth796
revision3

Full lifecycle of invocation and container creation

draw.io Diagram
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameflow
simpleViewerfalse
width
diagramWidth563
revision2

...

Edge case: If an action only has a very small amount of containers (less than there are Controllers in the system), we have a problem with the method described above. Since the front-door schedules round-robin or least-connected, it's impossible to decide to which Controller the request needs to go to hit that has a container available.
In this case, the other Controllers (who didn't get a container) act as a proxy and send the request to a Controller that actually has a container (maybe even via HTTP redirect). The ContainerManager decides which Controllers will act as a proxy in this case, since its the instance that distributes the containers.

Edge case diagram

draw.io Diagram
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameedgecase
simpleViewerfalse
width
diagramWidth451
revision2

...