All,

While working with Karthik, we have discovered that the way ECO handles
topology configuration will not work for all configuration types.  To be
specific, setting individual component's ram will not work.  We will also
have to keep in mind container size that contains the components.  My
proposal is this:

Create a standardized way to allow for the  configuring of  component ram
size in the "config" section of the  eco yaml file.  This would be a list
of key value pairs that mapped the "id" of a component to an allocated ram
size in MB.  An example is below:

config:
  topology.workers: 2
  topology.component.rammap:
    - "some-id": 1234
    - "other-id": 6789

However the  above implementation may be unclear when it comes to
understanding what unit of measurement is implicitly specified and/or
expected.  Or we could do something like below.

config:
  topology.workers: 2
  topology.component.rammap:
    - spec:
       id: "component-1"
       size: 1234
       type: MB  // Megabytes
    - spec:
       id: "component-2"
       size: 6789
       type: GB // GigaBytes
    - spec:
       id: "component-3"
       size: 123456789
       type: B // Bytes


If a mapping is not specified for a component, we can just assume Heron's
defaults.  We could then dynamically calculate the container size based off
of the number components and their corresponding allocated resources for
simplicity of use for the user, but still allow them to specify a custom
set of resources to a container like below

topology.container.disk: 1234
topology.container.ram: 3456
topology.container.cpu: 2


It may be best if I reused the ByteAmount object to calculate resource size
to remain consistent with the other Heron APIs.  Any concerns or
improvements to this approach I am missing?

Please Advise,

Josh

Reply via email to