|
|
|
|||||
|
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 |
|
|||||
|
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.;..) |
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| IceStorm filtering | lbrgz | Help Center | 1 | 11-08-2006 08:25 PM |
| Unknown property "IceBox.DBEnvName.IceStorm" for IceStorm | wwwtiger | Help Center | 1 | 11-05-2004 03:23 PM |
| Glacier Filtering | StuartA | Help Center | 9 | 05-04-2004 08:51 AM |