【发布时间】: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