Eventual Consistency

后端 未结 4 2027
我在风中等你
我在风中等你 2020-12-08 08:00

I am in the early stages of design of an application that has to be highly available and scalable. I want to use an eventual consistency data model for this for a number of

4条回答
  •  佛祖请我去吃肉
    2020-12-08 08:34

    The only solution to your problem is to decide which tradeoffs in the CAP theorem are right for you, then begin implementing it.

    mdorseif has a great point. There are many configurations of to what extent you trade off consistency, availability, and partitioning. You have two main options.

    1. Go the route of an in-house distributed system (takes lots of expertise and research)
    2. Vet and experiment with a number of distributed databases to decide what can handle your requirements as scale.

    This is probably an over-simplification. A real production-ready pipeline is an eco-system. It'll at least get you on the right track.

    Appnexus is an ad platform that uses hbase for very high availability and eventual consistency. They talk a lot about this here.

    An article on http://highscaleability.com outlines how the New York Times implemented RabbitMQ alongside Cassandra across a WAN for fault tolerance and high availability.

    MongoDB provides a great deal of flexibility in balancing consistency with availability with their implementation of write concerns. They've got excellent documentation that highlights exactly how to implement it with all the gotchas (including partitioning). They implement the two-phase commit to maintain state across the network (on their config servers).

    Google has a great paper on this subject, their photon project implements a highly scalable, highly reliable system with the paxos algoritm at the heart of it alongside a few other techniques. It also happens to be very consistent (with end-to-end latency of about 10s) and fault tolerant, standing up to regional failures.

提交回复
热议问题