gpt4 book ai didi

Erlang容错应用程序: PA or CA of CAP?

转载 作者:行者123 更新时间:2023-12-02 06:17:17 26 4
gpt4 key购买 nike

我已经问过question关于披萨外卖店的简单容错软实时 Web 应用程序。

enter image description here

我在那里得到了非常好的评论和答案,但我不同意它是一个真正的网络服务。它不是一个网络服务,而是一个实时系统,用于接受客户的订单、控制这些订单的调度并控制实时交付这些订单的车辆。

此外,与“真正的”网络服务不同,该系统并不打算拥有很多用户 - 它只是一些调度员(电话接线员)和一些送货司机会使用它(目前我没有要求向实际客户提供直接访问服务的权限;只有调度员和送货司机才能直接访问)。

因此这个问题有点笼统。

我发现,为了为此应用程序做出正确的 NoSQL 数据存储选项选择,我要做的第一件事就是在 CAPACP 根据 CAP theorem .

现在,Building Web Applications with Erlang书中说“虽然它[Mnesia]不是一个SQL数据库,但它是一个像SQL数据库一样的CA数据库。它不会处理网络分区”。同一本书中说 CouchDB 数据库是一个 PA 数据库。

考虑到这一点,我认为我需要对应用程序做的第一件事是确定“容错”术语对于 CAP 的含义。

我的简单要求是让应用程序 24/7(R1) 可用。另一个是不需要扩展,应用程序将拥有非常少量的用户(可能不可能有数千个调度程序)(R2)。

现在,R1 是否要求应​​用程序提供一致性、可用性和分区容错性以及优先级是什么?

什么类型的数据存储选项可以更好地处理以下问题:

  1. 为调度员(接听客户电话并使用 CRM 的人员)提供 24/7 全天候服务,以查找客户记录并向系统下订单;
  2. 实时查询当前正在处理的订单及其状态(已下达、烘焙、已发货、已交付、已交付);
  3. 实时跟踪所有作业车辆的位置及其有效负载;
  4. 在系统崩溃或网络崩溃后恢复系统的任何部分以继续提供 1,2 和 3;

总结一下:哪种数据存储(CA、PA 或 CP)更适合上述系统?什么样的数据存储能更好地满足R1要求?

最佳答案

  • 对于您的 24 小时要求,您正在搜索具有(高)可用性的数据库,因为您希望请求每次都能成功(即使它们只是错误结果)。
  • 当您没有分区容错能力时,netsplit 会导致整个系统瘫痪
  • 一致性固然很好,但你只能做到 3 个中的 2 个。

您最好的选择是 PA 解决方案。我强烈推荐受 Amazon Dynamo 启发的解决方案。最著名的 dynamo 实现是 riak 和 couchdb。 Riak 甚至允许您通过调整读写副本将 PA 更改为其他形式。

关于Erlang容错应用程序: PA or CA of CAP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12061487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com