Notebook
It's related with the fact that computers are everywhere in the modern world, sometimes totaly hidden from our sight. It's also related with the need to have computers available at any time. Some examples could be wearable computers or google glasses.
Of course, the "ubiquitous computers" will be nothing without being connected to the Internet. New technologies like wifimax or IP v.6 will result in the Internet of things.
Having a good distribution system to deliver digital content to everywhere will increase the demand of services like videoconfering or film-on-request.
I'm writting these pages on https://www.wakari.io/ , an utility web software that permits to have a complete sci-tech computer environment without having to install anything in your own computer. These services, like others like google docs are examples of software as a service.
Two-tier architecture is the traditional way of access to a network service, where all the server access, logic and database are handled by a single layer (a server). In the three-tier schema we put some of these services like user access lists, bussiness logic, etc. into another layer in order to be more database-independent, more SO-independent or more Webserver-independent. With the three-tier architecture we can, for example, load-balancing the servers or change the underlying database without change all the other components because the system is more decoupled. One disadvantage is the rise of complexity of the entire system.
Attending to the "user activity" line on the client side it seems that the left figure represents a synchronous interaction and the right one an asynchronous communitacion because on the left the user activity line is discontinous. Instead is it possible to make a synchronous ajax call, the usual way is to let the user interact with the rest of the page between the ajax call is taken place. This way the user has more freedom and perceives a more quickly response than the traditional loading of the whole page.
Raft provides an easy to undersand algorithm to have a replicated log to allow a collection of machines working as a coherent group to survive to a faillure of some of its members.
It uses the RPC mechanism it in two situations: RequestVote: used by candidates during the elections to gather votes Arguments (term, candidateId, lastLogIndex, lastLogTerm) Results (term, voteGranted) AppendEntries: used by the leader to replicate the log entries Arguments (term, leaderId, prevLogIndex, prevLogTerm, entries[], leaderCommit) Results (term, success)
I'm not sure to totally understand the question. If the question is related to the underliying physical network architecture we are talking about a (local) network of (usually 5) computers. The leader is not acting as the main connection server. The client can connect to any of the machines and if the server is a follower the client will be redirected to the leader. Form the point of view of the service to the client this is a traditional client-server architecture. There is not real time load-balancing or something similar. The communications between computers is done by the RPC "protocol" and some kind of heartbeat mechanism. There is only one layer from my point of view.