-
Notifications
You must be signed in to change notification settings - Fork 254
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
Required Client side metrics #96
Comments
Moving this to milestone 0.3.5. |
Here are the metrics I can think of:
|
How do you envision these working? Maintaining them all internally and an API for retrieving them? or firing the events to a plugin so the implementation decides what to do with them? |
Events based implementation should do. |
This is a sub-task for issue #98 where we decided about event based implementation. I was actually thinking about the events publishing per se and I am in two minds whether we should have the model like:
There are of course pros & cons of both. The pro of first approach is simplicity and the ability to be able to add new callbacks without breaking the contract. |
After looking at netty's evolution and also the model that hystrix follows I am leaning towards Option 2 above. Thoughts? |
Just to understand correctly, when you talk about exposing events for each metric, you expose them as Observables, as in https://github.com/Netflix/RxNetty/blob/master/rx-netty/src/main/java/io/reactivex/netty/client/PoolInsightProvider.java#L19? |
The issue with exposing them as an observable is if we have a state (eg: duration for request processing) per event. This means that for every event (these events will be large ~ 5-6 events per request) we have to create a new object. This in high-throughput systems can create a lot of short lived objects and hence GC pressure. This behavior is also referred to in the netty case study I pointed out in the last comment. |
Cool. |
I have put the design proposal in the parent issue #98 . Any feedback is much appreciated! |
Agreed on the need to avoid object allocations for this. |
As there was no insight initially on which metrics should be provided. This comment is updated post-implementation to provide information about the available metrics.
Following metrics will be available for out of the box servo metrics plugin.
TCP
This is a gauge.
HTTP
HTTP contains all the metrics that are available from TCP. The following metrics are specific to HTTP:
UDP
UDP contains all the metrics that are available from TCP.
The text was updated successfully, but these errors were encountered: