Development of the web application + api for mobile clients in Java

It is planned to develop high-loaded project. In short: client-server application to connect person-customers with service providers. Soostvetstvenno, users planned quite a lot of service providers too much. But first you need to make a prototype. What we have:
OS — Linux (probably Ubuntu Server)
Language — Java
DBMS — PostgreSQL + Hibernate
What is missing:
1. Framework to create the actual web application. Preferably with the option ispolzovatj some layout xml's, JavaScript etc. In web development I am newbie, I can't quite articulate properly, what's actually necessary.
2. Framework for creating API, for which you will be able to refer clients — web application and mobile clients.
Possible that it was one and the same.

There will be able to tell what are the ways of distribution of load on multiple servers? As the database can be distributed across multiple servers?

It has experience in developing mobile client applications for this kind of systems.
October 3rd 19 at 03:33
4 answers
October 3rd 19 at 03:35
Possible that it was one and the same.

With this query you can look at the Play framework. He uses the REST approach for each of these services can be reused to the face, and IPAS.
Meant do not have one API for all, and one framework, which can be stellate and web API, and API for mobile clients. - clement.Steuber commented on October 3rd 19 at 03:38
Well I was just talking about it. - lila.Larson commented on October 3rd 19 at 03:41
October 3rd 19 at 03:37
For sheer scale applications in Java we usually use a queue of tasks that are implemented using RabbitMQ. Thus the system has multiple servers that are listening to same queue from RabbitMQ, the one who first pulled her out of the job, and executes it. In such a system it is easy to add new servers. For a queue you can also use ActiveMQ or Redis. All of these server queues massturbate in varying degrees.
October 3rd 19 at 03:39
If you need to start with a prototype, and you'll use JavaScript, you should look in the direction of NodeJS. Both client and server easier to write in one language. API different to do on the gcd is a pleasure.

With regard to larger loads and distribution, with NodeJS can be difficulties. However, it may be time to rewrite in Erlang. Depends on the problem, of course, but as a rule such things in Erlange you can get more or less out of the box.

If the use of Java in principle, it is possible to look in the direction of Akka(it is suitable for Scala projects and Java). The framework implements an infrastructure similar to the one that provides the OTP(Erlang), but on the basis of Java-machines.
October 3rd 19 at 03:41
If you want to use Java,...
The article High Availability Clustering and Load Balancing will give You ideas on a lot of cars to deliver the Java EE servers such as GlassFish and use them as a single cluster, distributing load and scaling the system as needed. In the prototype, start with a single DBMS server and move on to more complicated structures (if needed!) only when you understand the nature of the information stored in the database. Remember capacity of all communication channels (calculate load)...

Find more questions by tags APIDatabasesDistributed computingJava