Add ScalableSingleBinary operational run mode#1004
Add ScalableSingleBinary operational run mode#1004joe-elliott merged 15 commits intografana:mainfrom
Conversation
9fdb7f0 to
7a57a98
Compare
|
What other documentation do we want to include here? We don't currently say much about the |
|
I've included some brief docs about our run modes. |
dcd4010 to
f73f0ff
Compare
joe-elliott
left a comment
There was a problem hiding this comment.
So far nice work. Have a few cleanup requests on the doc and then let's add a docker-compose example that uses this new mode so people can see a simple way to set it up.
|
Oh whoops, with all the rebasing I failed to add the docker-compose example. I'll get that updated and clean up the docs per your suggestions. Thanks for the review. |
|
Late to the conversation, but I would like to propose another module naming change. With the addition of a scaleable single binary mode, I'm finding the naming of the "all" module somewhat misleading. It runs all components but differently. The new scaleable mode is really closer to "all", as in it runs all components without changes. Could we do something like the following? Note it doesn't change the commandline for --target=all // The various modules that make up tempo.
const (
SingleBinary string = "all"
ScalableSingleBinary string = "scalable-single-binary"
) |
fecc219 to
2888df5
Compare
|
I've included the change you mention @mdisibio. |
6f120fd to
82b0d24
Compare
|
Hold for @KMiller-Grafana review. |
|
The docs have been updated from @KMiller-Grafana, and I also dropped the configuration section for this mode. Hows that look now? |
b2dad47 to
a2520f7
Compare
|
Thanks for the review and updates @KMiller-Grafana. |
c372808 to
6916a70
Compare
6916a70 to
23310e3
Compare
|
|
||
| A single binary mode deployment runs all top-level components in a single | ||
| process, forming an instance of Tempo. The single binary mode is the simplest | ||
| to deploy but cannot but can not horizontally scale. Refer to |
There was a problem hiding this comment.
| to deploy but cannot but can not horizontally scale. Refer to | |
| to deploy, but cannot but can not horizontally scale out by increasing the quantity of components. Refer to |
| A scalable single binary deployment is similar to the single binary mode in | ||
| that all components are deployed in one binary but it is capable of | ||
| horizontally scaling. This mode offers some flexibility of scaling without the |
There was a problem hiding this comment.
This rewrite misses telling readers what scalable single binary mode is. Please consider this suggestion.
| A scalable single binary deployment is similar to the single binary mode in | |
| that all components are deployed in one binary but it is capable of | |
| horizontally scaling. This mode offers some flexibility of scaling without the | |
| A scalable single binary deployment is similar to the single binary mode in | |
| that all components are deployed within one binary. Horizontally scale out is achieved by instantiating more than one single binary. This mode offers some flexibility of scaling without the configuration |
| ## Microservices | ||
|
|
||
| In microservices mode, components are deployed in distinct processes. Scaling | ||
| is per component which allows for greater flexibility in scaling and more |
There was a problem hiding this comment.
| is per component which allows for greater flexibility in scaling and more | |
| is per component, which allows for greater flexibility in scaling and more |
| This example aims to make it easier to measure and analyze tempo performance in | ||
| micro-services mode. There are already many examples for running tempo under | ||
| load, but they use the single-binary approach and are not representative of | ||
| what is occurring in larger installations. Here tempo is run with separate |
There was a problem hiding this comment.
| This example aims to make it easier to measure and analyze tempo performance in | |
| micro-services mode. There are already many examples for running tempo under | |
| load, but they use the single-binary approach and are not representative of | |
| what is occurring in larger installations. Here tempo is run with separate | |
| This example aims to make it easier to measure and analyze Tempo performance in | |
| micro-services mode. There are already many examples for running Tempo under | |
| load, but they use the single-binary approach and are not representative of | |
| what is occurring in larger installations. Here Tempo is run with separate |
| This example is expected to be used in conjunction with tempo development in a | ||
| rapid feedback loop. It is assumed you have a working go installation and a | ||
| copy of tempo already cloned somewhere. |
There was a problem hiding this comment.
| This example is expected to be used in conjunction with tempo development in a | |
| rapid feedback loop. It is assumed you have a working go installation and a | |
| copy of tempo already cloned somewhere. | |
| This example is expected to be used in conjunction with Tempo development in a | |
| rapid feedback loop. It is assumed you have a working Go installation and a | |
| copy of the Tempo repository already cloned somewhere. |
| # Key Metrics | ||
| As tempo is designed to be very horizontally scaleable, the key metrics are _per volume unit_, i.e. spans / s / cpu core. | ||
|
|
||
| As tempo is designed to be very horizontally scalable, the key metrics are _per volume unit_, i.e. spans / s / cpu core. |
There was a problem hiding this comment.
| As tempo is designed to be very horizontally scalable, the key metrics are _per volume unit_, i.e. spans / s / cpu core. | |
| As Tempo is designed to be horizontally scalable, the key metrics are _per volume unit_, i.e. spans / s / cpu core. |
What this PR does:
Add a new module
ScalableSingleBinarythat will run all services and also make use of memberlist for cluster awareness.Which issue(s) this PR fixes:
Fixes #86
Checklist
CHANGELOG.mdupdated - the order of entries should be[CHANGE],[FEATURE],[ENHANCEMENT],[BUGFIX]