# data[].attributes.body
Most of the properties required from a distributed system depend on the replication of data. Without replication, the loss of a server hosting a unique copy of some data item results in unrecoverable damages. As already said, replication also brings other advantages, including the ability to distribute read/write operations for improved scalability.
Consistency is the ability of a system to behave as if the transaction of each user always run in isolation from other transactions, and never fails. Consider for instance a transaction on an e-commerce site. There is a “basket” which is progressively filled with bought items. At the end the user is directed to a secure payment interface. Such a transaction involves many HTTP accesses, and may last an extended period of time (typically, a few minutes). Consistency in this context means that if the user added an item to her basket at some point, it should remain there until the end of the transaction. Furthermore, the item should still be available when time comes to pay and deliver the product.

# data[].attributes.body
A task that is partially allocated to a server may become idle if the server crashes or turns out to be unavailable for any reason. In the worst case, it can be delayed until the problem is fixed or the faulty server replaced by a replica. Availability is the capacity of a system to limit as much as possible this latency (this implicitly assumes that the system is already reliable: failures can be detected and repair actions initiated). This involves two different mechanisms: the failure (crash) must be detected as soon as possible, and a quick recovery procedure must be initiated. The process of setting up a protection system to face and fix quickly node failures is usually termed failover.

# data[].attributes.body
Making a distributed system reliable is very important.  The failure of a distributed system can result in anything from easily repairable errors to catastrophic meltdowns.  A reliable distributed system is designed to be as fault tolerant as possible.  Fault tolerance deals with making the system function in the presence of faults.  Faults can occur in any of the components of a distributed systems.

# data[].attributes.body
Because distributed systems work across a variety of different machines, they are inherently scalable. That is, the distributed system can adjust how many system resources it is making use of in light of what kind of demand the system is under. If a system is under high demand, then it can have every machine running to capacity. However, if the load on the system is relatively low, it can take different components of the distributed system offline to save power and wear on the system. When demand on the system goes up again, these components can come back online.

# data[].attributes.body
Distributed systems allow for greater overall service performance than systems whose function is centralized in a single location. By spreading the computational load across different nodes, each location is under less stress. This allows each node to perform more efficiently, which increases the performance of the overall service. One example of how this works is in high demand messaging services. Instead of dumping the load for every current user transaction onto a single server, transactions are spread across a number of different servers. In this way, the demand on each individual node is reduced, and the data each node receives percolate out to the other nodes in the background.

# data[].attributes.headline
Advantages & Disadvantages of Distributed Systems

# data[].attributes.subject
Advantages & Disadvantages of Distributed Systems

# data[].attributes.body
As the Internet and network technologies have advanced in sophistication and reliability, engineers have created a new way of running computing services: distributed systems. Instead of centralizing data and computational power in a single location then sending it out to clients, distributed systems spread both data and computational tasks across multiple nodes that work in unison. While this type of system has many advantages, it is not without its drawbacks.

# data[].attributes.body
A computer program that runs in a distributed system is called a distributed program, and distributed programming is the process of writing such programs. There are many alternatives for the message passing mechanism, including HTTP

A goal and challenge pursued by some computer scientists and practitioners in distributed systems is location transparency; however, this goal has fallen out of favour in industry, as distributed systems are different from conventional non-distributed systems, and the differences, such as network partitions, partial system failures, and partial upgrades, cannot simply be "papered over" by attempts at "transparency" (see CAP theorem).

Distributed computing also refers to the use of distributed systems to solve computational problems. In distributed computing, a problem is divided into many tasks, each of which is solved by one or more computers, which communicate with each other by message passing.

# data[].attributes.body
A distributed system is a model in which components located on networked computers communicate and coordinate their actions by passing messagess.
The components interact with each other in order to achieve a common goal. Three significant characteristics of distributed systems are: concurrency of components, lack of a global clock, and independent failure of components.