Closed gabel closed 8 years ago
We work with multi-node load-balanced environments almost exclusively, with all nodes protected by Phystrix individually. We have all network calls wrapped into Phystrix, therefore using network calls to support Phystrix itself is not acceptable.
If you configure Phystrix to break the circuit when 50% of calls fail - it doesn't really matter if it's one node or many, result will be the same.
Are there examples when having a redis-like single storage for metrics would be beneficial?
I understand the idea of not rely on Network while trying to solve Network issues.
How do you use the dashboard when every instance of one service has its own metrics?
Service A
Service B
Service D (aka. Dashboard)
If the instances of Service A cannot reach Service B and they don't share one apc e.g. because they run as Containers isolated.
Or am I wrong?
The dashboard can be used as it is used for Hystrix, See here https://github.com/Netflix/Hystrix/wiki/Dashboard
The Hystrix Dashboard allows you to monitor a single server or a cluster of servers aggregated using Turbine
Every machine can stream metrics using https://github.com/odesk/phystrix-dashboard, you use that stream either directly or you collect a number of streams using Turbine.
Every instance needs to figure Out on itself that the call to Service B is not possible.
If you configure Phystrix to break the circuit when 50% of calls fail - 50% of all calls will fail and 50% of calls on each instance will fail therefore it will work. Do you see any issues with that?
The only problem is the "every machine" context with containers and APC. Physterix-dashboard would not be able to access the APC of this container (and turbine is only compatible to eureka/aws/zookeeper). If you don't see this problem at all for the common use cases of physterix we're gonna think about another solution and this issue can be closed.
Physterix-dashboard would not be able to access the APC of this container
You install https://github.com/odesk/phystrix-dashboard on each machine and it streams the metrics. You can then combine the streams using turbine and view them using Hystrix Dashboard.
With multiple load balanced nodes on a non apc shared environment the circuit breaker storage could be shared between them. The alternative is that all instances of the same service have their own circuit state storage. A shared storage would generate overhead due to network communication but may be appropriate in some setups.
Any plans to create or support a PR for state storages for redis or others to support multi-node environments or setups without apc/apcu?
Update
This brings me to the question how to use the dashboard for multiple instances of one service - but maybe this topic belongs in the dashboard component issues...