Recently I worked on one project. The purpose of that project is sending emails according the business rules. So need lots of concurrent jobs then provide the enough scalability and throughput.
It's very interesting we found two solutions:
The kilim said they can work on the million concurrent jobs with minor memory and less thread support. How about the truth?
Let's design one scenario:
The job contain the follwing steps:
1. Take map<string,string> as request
2. First get the value from the map<string,string> with the key value "KEY"
3. Second execute the subroutine with no parameter.
4. Third the subroutine will wait 200 ms and then return with string result with static value "executed".
Memory consumption: 512M
Backend thread count: 160
Total execution time: 10072416187 ns
Total execution time: 332489185 ns
Memory consumption: 1024M
Total execution time: 1256589994539 ns
Total execution time: 10244263167 ns
Computer: Dell Latitude E6400
OS: Windows XP sp2
1. Kilim: https://github.com/krestenkrab/kilim
2. CommJ: http://commonj.myfoo.de/
3. Mulilane introduce: http://www.1024cores.net/home/scalable-architecture/multilane
I will open source the multi-lane version of commj. So please wait the future introduce.