I need to build very concurrent web service which will expose REST based API for JavaScript (front end) and Rails (back end). Web service will be suiting data access API to MongoDB.
I already wrote an initial implementation using NodeJS and would like to try Scala based solution. I’m also considering Erlang, for which every web framework is actor based.
So I’m looking for web framework explicitly build using Actors in order to support massive load of requests I’m very new to Scala and I don’t quite understand how Actor might work if almost all frameworks for Scala are based on Java servlets which creates a thread on each request which will just exhaust all resources in my scenario.
If you’re really going to have 10k+ long active connections at a time, then any standard Java application server/framework (maybe, except for Netty) will not work for you – all of them are consuming lots of memory (even if any kind of smart NIO is used). You’d better stick to a clustered event-loop based solution (like node.js that you’ve already tried), mongrel backed with zeroMQ, nginx with the mode for writing into MQ polled by Scala Actors, etc.
Among the Scala/Java frameworks, Lift has a good async support for REST (though it’s not directly tied to actors). OTOH, LinkedIn uses Scalatra + stdlib actors for their REST services behind Signal ,and feels just fine.