-
Notifications
You must be signed in to change notification settings - Fork 544
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add ScalableSingleBinary operational run mode #1004
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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. |
example/docker-compose/scalable-single-binary/docker-compose.yaml
Outdated
Show resolved
Hide resolved
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 |
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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 |
|
||
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn 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 | |
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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. |
@@ -38,4 +47,5 @@ docker-compose up -d --scale synthetic-load-generator=4 | |||
``` | |||
|
|||
# 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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
ScalableSingleBinary
that will run all services and also make use of memberlist for cluster awareness.Which issue(s) this PR fixes:
Fixes #86
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]