在微服务之间共享实体 ID

Sharing entity ID between microservices

假设我有一个 Users 微服务。它的数据是通过 REST API 在 HATEOAS "pattern" 之后使用的,所以一个常见的 request/response 应该是这样的:

GET /users

{
  results: 5,
  data :[
    {
      name: "John Doe",
      email: "whatever",
      ...,
      links : [
        {
          rel: "self",
          href: "/users/1"
        }
      ]
    },
    ...
  ]
}

正如 HATEOAS 所说,不会返回用户 ID,而是 link 到 "self"。

到目前为止,还不错。现在,我想要另一个微服务来管理用户的图片。在那个新的微服务中,一个用户和她的照片之间存在关系,所以我需要一个用户标识符。

我应该在图片微服务中使用“/users/1”("self" link)作为用户 ID 吗?

如果没有,我该如何处理?

您不能采用 url 的结构,但可以 return 实体 ID。

Should I use "/users/1" ("self" link) as user ID in the pics microservice?

如果你这样做,你假设第二个微服务使用相同的 url 方案,这是不好的。您将这两个微服务结合起来。

此外,请求响应中包含的 url 仅对该(微)服务有意义,您不能假设另一个系统中相应的 resource 具有相同的意义id