Eventing scaling Internal architecture

Want to understand how the eventing architecture helps distributing the vbuckets underneath the eventing nodes in combination of worker threads ?

basically when it comes to scaling do I have to prefer vertical scaling by increasing the cores and there by increase the worker threads ? or keep the worker setting as is and do the horizontal scaling ?

which one is more beneficial ? recently I have a situation where in there is a huge load has caused my eventing function to cause high backlog of 300k+ events at that point of time, my function already running with 16 workers on 3 eventing nodes (16 core) and I see “successful function invocation” rate is not raised linear with the load. After the load reduced the backlog got reduced to zero.

is this situation be better handled with more eventing nodes or more worker threads ? by the way the worker threads and cores of the machine is 1:1 ?

According to the FAQ, Eventing is MDS-enabled (Mutli Dimentional Scaling), so increasing either would help.

by the way the worker threads and cores of the machine is 1:1 ?

The number of workers is configurable. 1:1 would make sense if the event is completely CPU-bound. In any other case, the number of works greater than the number of cores would make sense.

If there is a simple change such as adding a node or increasing workers, why not try that and know definitively what the effect is?

above documentation is not clear on will it distributes the vbuckets across eventing nodes and each eventing function will work on its vbuckets assigned to its worker ? all these questions are not answered.

“You can scale up vertically by adding additional workers (in the Eventing Function’s settings) to increase performance for a specific Function. You can also scale out horizontally via Couchbase’s elastic scaling option by adding another node and rebalancing. In this case each eventing node is assigned a subset of vBuckets. Note this sharding increases overall performance for all Functions.”