[EnMasse] AddressController performance / ConfigMap lookups
Gordon Sim
gsim at redhat.com
Mon Mar 12 14:46:01 UTC 2018
On 12/03/18 13:48, Lohmann Carsten (INST/ECS4) wrote:
> Hi Ulf,
>
> in general, we were thinking whether it wouldn't be better to use a
> database (e.g. MongoDB) instead of ConfigMaps for address-persistence.
>
> When thinking about a scenario with 10000+ addresses, having that many
> ConfigMaps seems .. odd. Kind of going beyond what the ConfigMap
> mechanism as Pod configuration data is probably intended for (although
> there don't seem to be hard limits in that sense).
>
> Database-persistence could possibly offer better performance and
> simplify backup-strategies.
>
> Also when updating EnMasse by re-deploying the EnMasse components
> (having deleted the K8s-namespace first), it seems easier to have the
> addresses in the database untouched by this instead of having to
> re-create the addresses/ConfigMaps.
>
> I think from an architectural point of view, the question is, whether
> the addresses are considered cluster-state information (therefore
> belonging in the etcd datastore) or application-specific data.
>
> With the current address ConfigMap content structure modelled after K8s
> resources, it's obviously handled more as cluster-state information.
>
> (In that sense, is it planned to switch addresses to be proper K8s
> custom resources instead of ConfigMaps?).
>
> But, I think the addresses could also be viewed as application-specific
> data and in that sense better be stored externally.
>
> WDYT? Have you thought about replacing the ConfigMap persistence? Do you
> see limitations with the current ConfigMap-based approach thinking about
> 10000+ addresses?
>
> Or would you see other persistence options?
One other option would be to allow configmaps to contain address-lists
rather than individual addresses. (E.g. 10+ configmaps of 1000 addresses
seems a lot more manageable than 10000+ configmaps).
My instinct is that it is the 'operator' components (e.g. agent ensuring
that the addresses configured match those defined) that are the
bottleneck at present though.
> From an implementation standpoint, having a separate persistence
> implementation seems quite straightforward in the address/standard
> controller with the AddressApi interface already in place.
>
> Then the agent component would have to be changed as well (maybe
> changing it to use the AddressController REST API?).
More information about the enmasse
mailing list