What is the status of the port
Closed this issue · 18 comments
Hi
I would like to know the status of this port.
Can it be used for production environment?
How ready is it?
what are the plans for it?
BR
Hey,
We are using this in production for several months now, and we don't have any issues with it. It's fully compatible with Netflix Dashboards(including Turbine) so feel free to use it. We also have a hostable nuget with the dasboard https://github.com/Elders/Hystrix.NET.Dashboard . We also support a Servo.NET implementation with https://github.com/Elders/Servo.NET and https://github.com/Elders/Servo.NET.Atlas
Since we also have the develop features on other projects there is little time for documentaion, but if you invest time going trough the code and figure how it works, you could benefit a lot. If you intend using any of the projects here https://github.com/Elders we will support you and hopefully fill out the documentation.
Pull requests are always welcome :)
Thanks!
- Where can I find some code examples?
- I would like to integrate it with RabbitMQ. Any suggestions here?
Thanks.
here is an example where you can play with different settings. https://github.com/Elders/Hystrix.NET/tree/master/src/Elders.Hystrix.NET.Example
Can you please elaborate on the integration with rabbitmq?
Yes. We are doing microservices with RabbitMQ and masstransit.
http://masstransit-project.com/
I would like to add a middleware which will be executed before we send any Message to RabbitMQ.
http://masstransit.readthedocs.io/en/master/middleware/index.html
The middleware will execute Hystrix command and will utilize the circuit breaker + dashboard.
we do exactly the same but not with mass transit. We use Cronus. Here is our middleware which integrates Cronus and Hystrix => https://github.com/Elders/Cronus.Hystrix
We also use RabbitMQ => https://github.com/Elders/Cronus.Transport.RabbitMQ
Thanks.
I am trying to setup a test which uses Hystix.
Here is the test:
Here is the command setter factory:
Now, I am trying to simulate the circuit breaker.
I am unable to see it working.
- Can you please explain the different options for HystrixCOmmandProperiesSetter?
e.g. WithExecutionIsolationThreadTimeout, WithExecutionIsolationStrategy, WithExecutionIsolationThreadInterruptOnTimeout, and etc.. - how would you configure it to fail fast?
BR,
Guy
You should first take a look at the defaults
Then every command which you create can have different configuration based on the needs. Please go through the defaults first to get more context and then we will come up with reasonable configuration for you. Please also specify what do you expects such as number of failed requests in what time frame. How long the CB should be opened, etc OR describe a business case which is best for configuring Hystrix
Thanks!
I got it working. I will share some of the code later on.
Next is to see the dashboard.
Any recommendations?
Hi --
Regarding the dashboard:
- how do you publish streams from a service so that the dashboard will pick it up?
- how do you configure the dashboard? (I assume we need to create a web site and install the dashboard nugget). can you please provide some more information?
BR
I did quick setup guide => https://github.com/Elders/Hystrix.NET.Dashboard
Please ping back if it works for you
Thanks!
I will give it a try.
One more question regarding HystixCommand which should run async using Task.
For example:
The issue I am having with the above implementation is that I cannot trip the circuit (open it).
- how would you implement it?
- is there a way to indicate to the HystixCommand that the run method failed without throwing exception?
Regarding the dashboard.
I have successfully integrated the stream. I can see it in the browser:
I have issue with the dashboard.
I have followed the instruction for the dashboard BUT I think we are missing something.
I saw that the staticFiles are embedded resources.
How do I browse to the actual dashboard?
https://github.com/Elders/Hystrix.NET.Dashboard
If you followed everything you should be able to see it at http://localhost:9000/dashboard
And you will have to pass the stream url (localhost:10900/Tester) to the dashboard
https://cloud.githubusercontent.com/assets/13493085/20794327/66775724-b7d4-11e6-8640-b7b3c1cafb4b.png
Regarding your question:
- Seems like a good starting point for a base class, but usually for every command you have different configurations, like if you make a query by id you'd expect that this operation is fast and the configured timeout will be like 500 ms, but if you are calling a heavy query over multiple tables etc you would like this timeout to be longer. So exect that you will have a lot of small devianions from the base class. As of right now i don't see any reason for it as its just a wrapper.
- Nope you can't and it does not makes sense to have another way to notify the faliure. Your system could have different error strategies based on the execptions. In some cases you would want an exponential backoff in other cases an immediate retry would makes sense. For error handling you could see what the guyes from umbraco did, its a good abstraction with a lot of extension points -> https://github.com/dylansu/umbraco/tree/49355255917370ae82b6fd8e3324a41f2a39fc77/src/Umbraco.Core/Persistence/FaultHandling
Regarding dashboard, works great! Thanks.
Just love those metrics :)
Good job guys.
Some performance questions:
- Have you tested the performance when using hystrix in various configurations?
- Have you tested the performance and network usage when using the streams? (We have ~150 different microservices. each one on a normal day runs 8 instances)
Some more question about setting up turbine.
If I have s instances running the same service. they both need to report the stream.
I need to see them both aggregated in the turbine.
- So, what would be the address they will report to?
- what would be the address I will put in the dashboard?
- how do I define custom cluster?
BR
@Sinstraliz configured for us Turbine. @Sinstraliz can you please create a guide for this?