Hi - Following SPI PRs need feedback (in order) , as interested people have time:
- LoadBalancer SPI - https://github.com/apache/incubator-openwhisk/pull/2584 - delegates loadbalancer creation to the SPI - Multiple LoadBalancers SPI - https://github.com/apache/incubator-openwhisk/pull/2668 - allows multiple load balancers, loaded via the previous SPI, resolved per action via LoadBalancerResolver; allows either single loadbalancer (current behavior) or kind based loadbalancer (config maps action kinds to a specific loadbalancer); this will allow things like latency sensitive actions routing to containers directly while latency insensitive actions route via Kafka, etc. Relies on previous - ContainerFactory SPI - https://github.com/apache/incubator-openwhisk/pull/2659 - delegates container instantiation to an SPI; Affected areas are InvokerReactive; also moved the dependent classes (Container et al) to common/scala, to allow for other cases (e.g. controller causes container launch, etc); TBD: checking maxActiveContainers and maxPoolSize should be part of this SPI too, but currently are not. (e.g. maxActiveContainers may be dynamic with some cluster managers) - LogStore SPI - https://github.com/apache/incubator-openwhisk/pull/2695 - enables log collection to be delegated to an decoupled system (instead of consuming cycles within the invoker JVM); Affected areas are ContainerProxy (log collection delegates to the SPI), RestAPIs (delegate log retrieval to the SPI), and ContainerFactory impls (delegate docker run --log-opt parameters to the SPI); still needs some cleanup (WIP). Relies on ContainerFactory, mostly since it organizes Container classes around the ones moved to common/scala Building on these some upcoming additions include: - direct LoadBalancer - allow controller to route actions directly to shared containers (i.e. to support better throughput with fewer containers, if the action supports it, via multiple loadbalancers - one for kafka+invoker routing, and one for direct container routing) - mesos ContainerFactory - to support launching containers in a mesos cluster (run more containers with fewer, or just 1, invokers per cluster, since the invoker has access to the entire mesos cluster for container launching) Let me know via comments in PR (or on dev list) if you have questions on these. Thanks in advance for feedback! Best Tyson
