Advice on making a Riak middleware easy to configure
msavy at redhat.com
Sat Mar 7 10:35:19 EST 2015
I'm involved in a FOSS API management project (apiman), and I've been
thinking about providing a Riak implementation of its gateway components
in the community (where we already have ElasticSearch and Infinispan).
These components provide the distributed storage for tasks like
rate-limiting counters, IP white-listing, black-listing, etc and are
applied by a horizontally scalable, async gateway (to vastly oversimplify!).
I'm in need of advice principally in regards to configuration and
set-up. Namely, what assumptions can I safely make about a Riak user's
set-up, and which settings I should expose in the component's
configuration. Note that many gateways can exist, and hence any set-up
ideally needs to already in advance, or be idempotent in case multiple
nodes attempt to do it at once (or otherwise for it to be
To be more concrete, should I, for example, expect the user to have
already set up and joined together their Riak cluster a priori, with
everything behind a load-balancer: just give me a single URI to connect
to). Or, should I expect a list of FQDNs/IPs and attempt to join them
together into a cluster on the user's behalf - or will there be
idempotence issues if I do that multiple times?
As far as I can tell, there is no node discovery/sharing
implementation, so I take it there's no way, for instance, to hit a
single node (which has already been joined with other nodes), and
thereby automatically gain knowledge of all cluster members?
A couple of other configuration issues: Given the introduction of Riak
Data Types on buckets, whom should I expect to set up the data types?
Should I create them automatically if they don't exist? Same for the
I'm very interested to know to present a convenient set of options that
will allow a typical development and deployment environment to be supported.
 With the usual consistency limitations
More information about the riak-users