【问题标题】:Data association within a service oriented architecture面向服务架构中的数据关联
【发布时间】:2016-09-28 13:27:27
【问题描述】:

我们有 3 个 API 应用程序构建为一种面向服务的架构。我说有点是因为它并不完全包含 SOA 原则,正如我将要通过这个简单的用例来解释的那样。

用例

我们有一个Client API,负责处理客户的联系信息。另一方面,我们有一个 Sales API 负责报价和计费。这是它变得混乱的部分(恕我直言)。销售 API 有一个 orders 表,该表具有 client_id 属性,以便了解与其关联的客户。

问题

正如我所说,该架构是作为一种 SOA 构建的,这意味着每个服务都有自己的数据库。 因此,继续我们的用例,销售 API 会在某个时候存储一个 client_id,该客户端实际上并不存在于该 API 的上下文中,因为客户端 API 是负责这一职责的。

例如,假设为了创建一个新的销售订单,我需要检查关联的客户端(在 POST api.sales.domain.com/orders 中作为 client_id 发送)确实存在。如何处理这种情况?现在我们针对客户端 API 执行 HTTP 请求并检查 200 响应。 如果我们想在订单 json 中返回嵌入客户端数据怎么办:

{
    "id": 2,
    "status": "pending",
    "client": {
        "name": "John Doe",
        "address": "123 street"
    }
}

当我们使用 Rails 时,我们使用 gem Her 来处理这些情况。但感觉不太对劲。

有没有更好的方法?

【问题讨论】:

    标签: ruby-on-rails service architecture


    【解决方案1】:

    首先,为什么您允许在销售 API 系统中创建一个 client_id,而客户端 API 系统中不存在该 client_id?在Sales API 系统中添加记录时,需要同时在Client API 系统中添加client_id,本身不会出现这个问题。并且每次您不需要检查客户端 API 中是否存在 client_id。我认为这是最好的方法。

    如果您不能遵循上述方法,那么您的解决方案就是实现它的一种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 2016-10-12
      • 2021-06-20
      • 2015-01-11
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多