On Nov 2, 8:21 pm, Fred Faber <[email protected]> wrote: > In general, I'm curious what it means for a scope to be valid across nodes. > This seems to imply that the state of a session-scoped object must be > entirely serializable. Are you requiring such a guarantee?
Yes. Basically all application classes must be serializable. The application code must be event-driven and organized into short tasks/ transactions. In a task, when the code calls a method on entity [1], the server will read and deserialize the entity from database. When the task ends, all modified entities are serialized and written into database. Database access is hidden from application code - all objects look like they would already be in memory, except that some of them are lazy-loading proxies instead of the real thing. In a cluster environment, the goal of the application server is to dynamically detect the database access patterns and move the entities which are commonly modified together [2] into the same server. The target audience of this system is developers of online multiplayer games, especially MMO games, so low latency and scalability are more important than throughput and durability. And in games the players are typically moving around, so the system needs to take into account which players are currently interacting with each other, and then adjust the load balancing and data partitioning accordingly. The ultimate goal is to achieve shardless game worlds. See http://java.sun.com/developer/technicalArticles/Interviews/kesselman_qa.html for more information (Dimdwarf was inspired by Darkstar). [1] I'm using the DDD terminology of Entities and Value Objects: http://devlicio.us/blogs/casey/archive/2009/02/13/ddd-entities-and-value-objects.aspx [2] Figuring out this dynamic data partitioning is a research problem still to be solved. -- You received this message because you are subscribed to the Google Groups "google-guice" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-guice?hl=en.
