【问题标题】:Should an iphone app communicate directly with a cassandra backend?iphone 应用程序是否应该直接与 cassandra 后端通信?
【发布时间】:2014-03-30 07:47:35
【问题描述】:

显然,实现这样的事情有多个步骤和阶段。

我在想我最终会有一个网络服务器,它从 ios 应用程序接收 http json 请求,然后查询 cassandra 后端并将结果发回。我仍然可以进行负载平衡和所有花哨的东西,还可以在服务器端提供一个逻辑层,并保持客户端应用程序的轻量级。

我不确定我是否了解 cassandra 客户端的适用性。似乎 cassandra 目标 c 客户端可以消除对上述方法的需要。

我看到另一个问题和答案,但不清楚,可能是因为它因需要而异。

【问题讨论】:

    标签: ios json cassandra


    【解决方案1】:

    使用类似 RESTful API 的东西,有很多原因。 如果您的服务器 IP 地址发生更改,则必须更新所有客户端,如果添加更多节点,则需要更新所有客户端,如果您决定升级 cassandra 并且某些功能更改,您的客户端将中断,您需要更新所有客户端。

    【讨论】:

      【解决方案2】:

      iPhone 应用不应直接连接到 Cassandra 后端或任何其他数据库存储。

      首先,与数据库通信通常需要采用非常特定的二进制协议(尤其是对于 Cassandra,二进制 CQL 或 Thrift)。编写一个适配器,让你的 Objective-C 应用程序在这个二进制协议中进行通信是一项主要工作,并且很容易比你的应用程序的其他部分付出更多的努力。但是,如果您将数据库隐藏在 Web 服务器后面,您将能够从以不同服务器端语言提供的各种现有适配器中进行选择,这意味着您不需要重做所有低级工作。您只需负责一小段服务器端代码,这些代码将翻译您的 REST 查询并将它们转发到其中一个 Cassandra 适配器(公开易于使用的接口)。

      其次,如果您想从手机连接到远程数据库,您的数据库服务器必须向整个互联网开放其端口,这是一种非常糟糕的安全做法,即使您使用 SSL 和用户凭据也是如此。同样,如果您隐藏在 Web 服务器后面,您将使用已经发展了数十年的技术层,以保持公共互联网上的安全。

      最后,让您的手机直接与 Cassandra 通话是一种糟糕的架构模式。当您编写在 Internet 上进行通信的应用程序时,您希望他们尽可能少地了解彼此,只知道如何彼此交谈(最好使用标准协议)。这样,您可以更换或升级单个组件,同时保持其他一切不变。这听起来可能不多,但实际上是手机或网络浏览器不直接与数据库通信的主要原因。 (如果这个设置原则上是一个好主意,那么只要有足够的工程努力,前两个问题就可以很容易地解决。)


      您首先建议使用 JSON 和 Web 服务器的方法是唯一正确的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-01
        • 2019-04-19
        • 1970-01-01
        • 1970-01-01
        • 2020-07-18
        • 2014-01-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多