Advice on making a Riak middleware easy to configure

Marc Savy msavy at redhat.com
Sat Mar 7 10:35:19 EST 2015


Hi All,

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
lockable/exclusionary).

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[1], 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[2]?
Should I create them automatically if they don't exist? Same for the
bucket itself.

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.

Regards,
Marc

[0] With the usual consistency limitations
[1] https://github.com/basho/riak/issues/356
[2] 
http://docs.basho.com/riak/latest/dev/using/data-types/#Setting-Up-Buckets-to-Use-Riak-Data-Types




More information about the riak-users mailing list