I'm starting to design a new version of one of my company's telecommunications products, and to provide load balancing and scalability I was considering some kind of (.NET open source) ESB. I'm hoping to boost the throughput of the system by avoiding relational databases and use (perhaps) non-transactional queues feeding into distributed in-memory caches (Velocity or memcached for example).
I've never used an architecture like this for a real-time system, and I'm worried that what I gain in simplicity of day-to-day development, I lose in throughput (which for this app is hyper-critical).
I've only played about with NServiceBus, so I have no idea whether it (or its brethren) is suitable as a foundation for real-time no-sql apps. What do you think?
How should I judge these products? Should I buy a commercial app instead, avoid ESB like the plagu开发者_C百科e, or use some other approach?
Andrew,
When talking about throughput, parallel message-based architectures tend to work very well. NServiceBus specifically has scaled to very high levels, and when used in conjunction with non-locking persistent stores, can perform tremendously.
When you say real-time, obviously you're not talking about hard real-time here - as you're still on Windows, and even then not programming in C/C++. In other words, it sounds like the main goal is throughput rather than low latency. I think you'll find that ESBs can work out very well for you.
精彩评论