Hi all,

When scaling a high traffic site running drupal the underlying problem is often to serve the same content to numerous users or at least to behave as if one need to have the whole database and content potentially accessible by requests triggered by numerous users.

Now what would be the relevant solution when each user need mainly to interact with his own content ? Think for example to a personal note taking site with large number of users.

One could think of having multiple servers each one devoted to a different set of users. Each server would be running independently the same full LAMP+ drupal and each would have only the database portion corresponding to its set of users. Scaling would mean then essentially adding a new server instance for new group of users and "balancing" users on the relevant server.

Is there any known tools for implementing things that way ? is it viable ?



John_B’s picture

I am sceptical of whether this would really work for D7. There is only point in channelling different users to different servers if they each have different sets of cached data, I would have thought. And caching for authenticated users is difficult in D7, although there have been several attempts to implement ESI. Your idea might make a lot more sense for D8. For D7 more usual idea of distributing tables to different storage (e.g. putting Watchdog and / or Session table in Mongdb) seems more practical.

However, the architecture of D8 where everything is an HTTP request (not just a whole page being returned to a single request) might well be more open for new ideas of this kind.

Arch55’s picture

In that case each server would nearly as it was an independant website. This could work with sticky load balancing (routing based on a cookie) and a server devoted to login session, retrieving the relevant server depending on user and setting the cookie to have balancing to that server.

The problem here is that one want to avoid bad thing like having two nodes with same node id on two different servers, being able to move one user with its data to another server etc...