apparatus / mu

A message based router for building distributed systems
MIT License
26 stars 1 forks source link

Abstract to remain resilient to failures #65

Open StarpTech opened 7 years ago

StarpTech commented 7 years ago

Mu is an message based router for building distributed systems this include a concept which describes how to dealing with failure scenerios.

Netflix use this Approach I think we can get inspired to implement a simliar strategy for Mu.

Now, we can start the discussion.

References: https://github.com/Netflix/Hystrix/wiki/Operations http://techblog.netflix.com/2012/02/fault-tolerance-in-high-volume.html https://msdn.microsoft.com/en-us/library/dn589784.aspx https://github.com/Netflix/Hystrix/wiki/

davidmarkclements commented 7 years ago

Yep absolutely right, these things have been on the radar for some time, great time to start outlining an approach cc @mcollina

StarpTech commented 7 years ago

Related https://github.com/apparatus/mu/issues/55, https://github.com/apparatus/mu/issues/54

StarpTech commented 7 years ago

Good circuit breaker nodejs implementation https://github.com/yammer/circuit-breaker-js

mcollina commented 7 years ago

@StarpTech that was good research! In the mu terminology, where do you see this? I think it is in transports, either as a wrapping transport mu.outbound({ hello: 'world' }, circuitBreaker(mytransport)). Or it can live in the mu core. I am more on the wrapping transport side.

As the implementation goes, I would prefer to have our own implementation. Would you like to contribute?

davidmarkclements commented 7 years ago

I think it would be an adapter, like mu-balance or mu-tee

davidmarkclements commented 7 years ago

@StarpTech if you would like to build, I'll add you to contribs, a circuit breaker def needs to be part of the core monorepo

StarpTech commented 7 years ago

@mcollina I need some investigation to understand the whole concept of Mu but its very simliar to seneca so I think its blink. I also prefer to build it as own package. @davidmarkclements Yes, would be great to be able to contribute. At the moment Im bussy but I will commit in regular intervals like here.

mcollina commented 7 years ago

I think this concept should be in core!

Dave, we might want to setup an empty package folder here now, and open an issue to track progess.

davidmarkclements commented 7 years ago

yah circuit breaker is def core - will do tomorrow

pelger commented 7 years ago

Agreed that these are required @StarpTech. These should be implemented as transport adapters, and should live in the core mono-repo - as per the example balance and tee adapters.