Re: QueueProxy
Jean Morissette <[email protected]> Tue, 21 Dec 2004 23:55:46 -0500
| Newsgroups | gmane.comp.java.seda.user |
|---|---|
| Message-ID | <[email protected]> |
Quartz wrote: >>we could create a mecanism where Sandstorm detect dynamically the >>queue contention and change on the fly the queue implementation to >>improve performance. (Sandstorm will do this operation only rarely) > > > General comment on dynamic behaviors and predicitability: > Although it looks cool, it kinda add 'zeros' (Laplace maths) in the system's transfer function. > These zeros may get dangerously close to the right side of the plane when combined. > That's the kind of assemly that create oscillations in memory/gc and CPU throughput once they are > in synergy with the remaining components. Also, systems that change behavior according to load > tend to sync all together of course, leading to a disastrous mega oscillation between good and bad > throughput, unless careful dampening of those behavioral changes is coded (i.e. changing behavior > at slower pace than the longest response time to any behavior change, the goal being to let the > system stabilise before changing behaviors).Given such complexity, engineers tend to let the cool > stuff behind and code it simple and linear. > > Sandstorm has a lot of dynamic behaviors: thread pool sizes, thread priority, rate controllers, > batch controllers (which already oscillates between 90 and 98 % of max throughput). > > I'm not saying queue switching/proxying is not a good idea. Just keep the above in mind. Beside > keeping it simple (which I keep forgetting time to time!), we should protect predictability. > I am wondering if having a QueueProxy is a good idea? I think that a QueueProxy could increase Sandstorm flexibility. We could change the queue implementation or decorate/proxy the queue dynamically. By exemple, we could move dynamically a stage on another computer by only changing its queue implementation with a remote queue. We don't need to stop handlers that use this stage. This could be useful for load-balancing stages on a cluster of workstations. Another similar exemple could be to enable/disable dynamically the multiplexing of QueueElement on different computers to mirror a stage. Also, these proxies could be chained if needed. Do you think this greater flexibility is enough important to sacrifice predictability? ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/