Database Reference
In-Depth Information
tomer. When the second customer tries to check out, the system says that the topic is not
available any more.
Relational databases are good for this task because they comply with the ACID properties.
If both the customers make requests at the same time, one customer will have to wait till
the other customer is done with the processing, and the database is made consistent. This
may add a few milliseconds of wait to the customer who came later.
An eventual consistent database system (where consistency of data across the distributed
servers may not be guaranteed immediately) may have shown availability of the topic at
the time of check out to both the customers. This will lead to a back order, and one of the
customers will be paid back. This may or may not be a good policy. A large number of
back orders may affect the shop's reputation and there may also be financial repercus-
sions.
Availability
Availability, in simple terms, is responsiveness; a system that's always available to serve.
The funny thing about availability is that sometimes a system becomes unavailable ex-
actly when you need it the most.
In our example, one day before Christmas, everyone is buying gifts. Millions of people
are searching, adding items to their carts, buying, and applying for discount coupons. If
one server goes down due to overload, the rest of the servers will get even more loaded
now, because the request from the dead server will be redirected to the rest of the ma-
chines, possibly killing the service due to overload. As the dominoes start to fall, eventu-
ally the site will go down. The peril does not end here. When the website comes online
again, it will face a storm of requests from all the people who are worried that the offer
end time is even closer, or those who will act quickly before the site goes down again.
Availability is the key component for extremely loaded services. Bad availability leads to
bad user experience, dissatisfied customers, and financial losses.
Partition-tolerance
Network partitioning is defined as the inability to communicate between two or more sub-
systems in a distributed system. This can be due to someone walking carelessly in a data
center and snapping the cable that connects the machine to the cluster, or may be network
outage between two data centers, dropped packages, or wrong configuration. Partition-tol-
erance is a system that can operate during the network partition. In a distributed system, a
Search WWH ::




Custom Search