You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by "Tellier Benoit (JIRA)" <se...@james.apache.org> on 2015/09/24 01:33:04 UTC

[jira] [Created] (JAMES-1623) Provide the option to use Hystrix on top of all IO operations

Tellier Benoit created JAMES-1623:
-------------------------------------

             Summary: Provide the option to use Hystrix on top of all IO operations
                 Key: JAMES-1623
                 URL: https://issues.apache.org/jira/browse/JAMES-1623
             Project: James Server
          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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org