Implement bulk write of activations in the Invoker.#2812
Implement bulk write of activations in the Invoker.#2812rabbah merged 2 commits intoapache:masterfrom
Conversation
|
If use original deal method, with mutliple action request, the invoker's So i am very expected that this pr can be merged to improve the invoker/couchdb performance. |
2af1782 to
c0273f0
Compare
|
Should consider applying to sequence activations written in the controller as well. Did you consider batching inside |
|
We did indeed. The first version of this PR included a latency penalty in the batching, which is why we started implementation in the invoker, where the penalty doesn't matter as much. We're currently investigating an even deeper integration in the CouchDB client itself. If that doesn't work out, we'd "just" bring the Want to wait for that and put it in this PR or are you fine with a second one improving on this? |
Writing activations in the Invoker is not time critical and can be greatly optimized by batching the activations to reduce the number of connections used towards the database. That enables a lot of optimizations on the database side and is in general a good practice. Signed-off-by: Christian Bickel <cbickel@de.ibm.com>
d654ba5 to
e474d16
Compare
|
PG3 1156 🔵 |
| @@ -147,4 +148,6 @@ protected[core] object DocInfo { | |||
| */ | |||
| @throws[IllegalArgumentException] | |||
| protected[core] def !(id: String, rev: String): DocInfo = DocInfo(DocId(id), DocRevision(rev)) | |||
| ec: ExecutionContext) { | ||
|
|
||
| private val stream = Source | ||
| .actorRef[(T, Promise[R])](Int.MaxValue, OverflowStrategy.dropNew) |
There was a problem hiding this comment.
we should perhaps open an issue to refactor the relevant code so that we can backpressure the invoker feed when the activations can't be drained fast enough.
Writing activations in the Invoker is not time critical and can be greatly optimized by batching the activations to reduce the number of connections used towards the database. That enables a lot of optimizations on the database side and is in general a good practice. Signed-off-by: Christian Bickel <cbickel@de.ibm.com>
Writing activations in the Invoker is not time critical and can be greatly optimized by batching the activations to reduce the number of connections used towards the database. That enables a lot of optimizations on the database side and is in general a good practice. Signed-off-by: Christian Bickel <cbickel@de.ibm.com>
Writing activations in the Invoker is not time critical and can be greatly optimized by batching the activations to reduce the number of connections used towards the database. That enables a lot of optimizations on the database side and is in general a good practice. Signed-off-by: Christian Bickel <cbickel@de.ibm.com>
Writing activations in the Invoker is not time critical and can be greatly optimized by batching the activations to reduce the number of connections used towards the database. That enables a lot of optimizations on the database side and is in general a good practice. Signed-off-by: Christian Bickel <cbickel@de.ibm.com>
Writing activations in the Invoker is not time critical and can be greatly optimized by batching the activations to reduce the number of connections used towards the database. That enables a lot of optimizations on the database side and is in general a good practice. Signed-off-by: Christian Bickel <cbickel@de.ibm.com>
Writing activations in the Invoker is not time critical and can be greatly optimized by batching the activations to reduce the number of connections used towards the database. That enables a lot of optimizations on the database side and is in general a good practice.
Signed-off-by: Christian Bickel cbickel@de.ibm.com