Results 1 to 3 of 3

Thread: Filtering in IceStorm?

  1. #1
    SteveWampler is offline Registered User
    Join Date
    Sep 2003
    Posts
    48

    Filtering in IceStorm?

    [I'm continuing an investigation of switching from CORBA to Ice...
    hence the naive questions as I learn more about Ice...]

    We currently rely heavily on events in our distributed processing. Under
    CORBA, we've been using OmniNotify for our event service (because
    our definition of an 'event service' is probably closer to a 'notification
    service'). Events are posted by name and contain sets of attributes
    (name/value pairs).

    IceStorm provides an efficient general-purpose publish/subscribe
    mechanism that meets most of our requirements and might be
    adapted to act as the framework of our event service. I see two
    approaches:

    (1) A separate topic for each event name. This could lead to
    *lots* of topics - is that a bad thing?

    (2) An 'event' topic (possibly with federation to help with load
    balancing). Then other topics could be used for other message
    classes (log/debug messages, alarms, heartbeats, etc).

    Regardless of the approach, however, there is one feature we rely on
    with OmniNotify that seems to be missing in IceStorm: the ability
    to subscribe to events using wildcarded event names (e.g. one
    client subscribes to 'vsm.*', another to '*.camera.*', and a third
    to 'vsm.camera.readout.noise'. While all three would see some
    events in common, the first two would receive additional events
    through the same subscription not visible to the third, and each
    of the first two would see events not seen by the other.)

    Now, I understand *why* IceStorm (I think) doesn't currently
    support this - it treats messages as opaque, gaining in efficiency
    and generality by doing so.

    However, a reasonably efficient way to provide the above (and other)
    message selection on a topic would be to provide application-specific
    filters. In the above case, we would provide an event name filter that
    would understand the event naming and wildcard conventions to
    determine whether or now a message should pass through.

    While this *could* be done in the client w/o affecting IceStorm, this would
    effectively require all clients to subscribe to all events, which is undesirable
    from both a network bandwidth perspective and cpu load point of view.

    But, if we adopted approach (2) above, then (in theory), it would be possible
    to attach these filters to the downstream connections from a topic, but within
    IceStorm. While this increases the load on the IceStorm node it (a) is no worse
    than the load on each client with a client-side solution and (b) possibly mitigated
    through federation. It helps overall network bandwidth.

    This would also have minimal impact when using IceStorm as it is currently
    designed - just a quick check to discover that there is no filter would be added
    to the processing.

    So, am I out of my mind? Is these a reasonable approach? Has it be dicussed
    before (I couldn't find it mentioned in the archives). Is there an existing
    mechanism in Ice that would serve the same purpose that I'm missing? Would it
    be hard to add? Would anyone else find it useful?

    Thanks!
    Steve

  2. #2
    mes's Avatar
    mes
    mes is offline ZeroC Staff
    Name: Mark Spruiell
    Organization: ZeroC, Inc.
    Project: Ice Developer
    Join Date
    Feb 2003
    Location
    California
    Posts
    1,441
    Hi Steve,

    If your subscribers need to subscribe to multiple events (and it sounds like they do), then I don't think approach #1 is very feasible (too much administrative work). The second approach sounds more appropriate, given what you've described.

    Regarding filtering: We've had a few discussions about this, and our preferred strategy to address it involves the use of Ice request contexts. Specifically, publishers supply metadata in the request context, and subscribers could configure IceStorm to filter messages based on that metadata.

    The advantage of this strategy is that it allows IceStorm to continue treating messages as opaque, because the request context is part of the message header, and not in the opaque message body. Consequently, filtering would not be affected by changes to Slice types or operation signatures.

    We haven't implemented this technique, but we think it's a reasonable and technically sound solution.

    Of course, since Ice makes it so easy to write an efficient event service, you could also elect to implement one yourself that meets your needs (and you could use the request context technique described above, if you like).

    Another possibility would be to implement a filtering topic that you federate with IceStorm. This could even be collocated with the IceStorm service (via IceBox), although that's not currently as much of a performance advantage as you might think, for technical reasons I won't get into now.

    As you can see, there are a number of ways to address your requirements. Let us know if you have any more questions.

  3. #3
    SteveWampler is offline Registered User
    Join Date
    Sep 2003
    Posts
    48
    Thanks - that's useful! The filtering on metadata is how OmniNotify does it. In OmniNotify
    it's adequate, but a bit inconvenient - you have to be careful laying out the metadata so
    the way ON does filtering matches what you want filtered (for example, in the last project we
    were limited to filtering on at most three fields, which wasn't quite as general as we'd have
    liked.

    You've given me some good info - thanks. (We're still in the investigation phase, so
    I won't act on anything yet.;..)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. IceStorm filtering
    By lbrgz in forum Help Center
    Replies: 13
    Last Post: 06-27-2011, 11:58 AM
  2. IceStorm and filtering
    By ngambek2003 in forum Help Center
    Replies: 1
    Last Post: 10-25-2009, 11:11 AM
  3. Glacier2 filtering
    By mwilson in forum Help Center
    Replies: 1
    Last Post: 08-16-2007, 03:26 AM
  4. Replies: 1
    Last Post: 11-05-2004, 02:23 PM
  5. Glacier Filtering
    By StuartA in forum Help Center
    Replies: 9
    Last Post: 05-04-2004, 07:51 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •