Tellier Benoit created MAILBOX-253:
--------------------------------------
Summary: Provide the option to use Hystrix on top of all IO
operations
Key: MAILBOX-253
URL: https://issues.apache.org/jira/browse/MAILBOX-253
Project: James Mailbox
Issue Type: New Feature
Reporter: Tellier Benoit
Hystrix is a Netflix developped librairy for fault tolerance in distributed
instances.
It provides automatic circuit breaking, meaning that your underlying database
can not be overloaded, leading to a crash. (Same thing for ElasticSearch, by
the way).
It also allows fallback if circuit is closed.
Finally, it allows live metrics on a dashboard.
And on top of that behaviour of hystrix is live configurable!
My point of view about this librairy, is that :
- It will help sysadmins to diagnose problems and design for their load.
- It will help us (James developpers) to identify hotspots in the code and
maybe design better interaction with our underlying data source.
- It will make James more resiliant to failures.
I conseder external IO to be :
- MessageMapper and MailboxMapper from mailbox
- Search indexes from mailbox
- data-*
- quotas from mailbox
I already have working implementations for all of those and strong mocked unit
tests.
Acceptance criteria :
- whatever implementation I choose for each component, I can enable hystrix
wrapping by a single configuration line.
- provide MPT testing on top of memory implementation
- publish metrics to be accessible with a hystrix dashboard
( if I have time ) - provide a video of the dashboard
- modify documentation about configuration changes.
Blocking point :
- Implementing Hystrix wrapping is trivial and non invasive
- Implementing configuration should be straight forward
- I will have troubbles with servlets (needed to publish metrics). I was
thinking to jetty, but I have strictly no idea how to deploy it ( and their doc
seems like a mess). Any help appreciated !
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]