多个微服务和数据库关联
Multiple microservices and database associations
我有一个关于微服务和数据库的问题。我正在开发一个应用程序:用户看到一个国家列表,可以点击它,这样他就可以看到那个国家的景点列表。我创建了一个 country-service、auth-service(包含 oAuth2 的用户)和一个 attraction-service。每个服务都有自己的数据库。我通过 iso 代码 (例如:BE = 比利时)绘制了一个景点与其国家/地区之间的关联:/api/attraction/be .
上面的方法似乎可行,但我对以下内容有点困惑:用户必须能够将景点添加到 his/her 收藏夹列表,但我不明白这怎么可能,因为我有这么多不同的数据库。
我是否创建一个 favorite-service,我是否传递 id(我认为我不应该这样做),我可以创建什么样的业务密钥,我如何以正确的方式关联数据...?
提前致谢!
根据您提供的信息,使用独立的喜爱服务听起来是正确的选择。
第二个更简单、更快捷的选择可能是也在您的用户服务上处理此问题,该服务负责管理您的用户数据的持久性,因为收藏夹是用户实体专有的。
至于 ID,我还没有看到为什么这可能是个坏主意的原因?您的个人服务将需要为相关数据存储一些识别值,我认为这里的主要问题只是让这个 ID 字段在您的不同服务中保持一致。您选择的内容只需要可靠且可预测,以便随着系统的发展保持简单易行。
如果您使用的是 RESTful HTTP,那么您已经拥有一个持久的、可收藏的资源标识,URLs(URIs,IRIs,如果你想要迂腐)。这些是您可以用来引用另一个微服务中的某个实体的 ID。
没有必要引入另一层ID,无论是国家代码还是数据库ID。这些东西无论如何都是你的微服务内部的,应该对所有客户端透明,包括其他微服务。
明确地说,我是说,您可以将 URI 存储到景点服务中的国家/地区。 URI 无论如何都不应该改变(尽管如果你收到永久重定向,你可能想准备改变它),你必须记住 URI无论如何,能够将其包含在景点表示中。
除了景点的 URI 之外,您实际上也不需要任何 "business key" 收藏夹。您可以将 URI 添加为书签,就像在浏览器中一样。
我想如果有一个 auth-service,还有 URIs 也用于识别个人用户。因此,在 "favorites" 服务中,您可以简单地 link 具有吸引力 URIs.[=10= 的用户 URI ]
我有一个关于微服务和数据库的问题。我正在开发一个应用程序:用户看到一个国家列表,可以点击它,这样他就可以看到那个国家的景点列表。我创建了一个 country-service、auth-service(包含 oAuth2 的用户)和一个 attraction-service。每个服务都有自己的数据库。我通过 iso 代码 (例如:BE = 比利时)绘制了一个景点与其国家/地区之间的关联:/api/attraction/be .
上面的方法似乎可行,但我对以下内容有点困惑:用户必须能够将景点添加到 his/her 收藏夹列表,但我不明白这怎么可能,因为我有这么多不同的数据库。
我是否创建一个 favorite-service,我是否传递 id(我认为我不应该这样做),我可以创建什么样的业务密钥,我如何以正确的方式关联数据...?
提前致谢!
根据您提供的信息,使用独立的喜爱服务听起来是正确的选择。
第二个更简单、更快捷的选择可能是也在您的用户服务上处理此问题,该服务负责管理您的用户数据的持久性,因为收藏夹是用户实体专有的。
至于 ID,我还没有看到为什么这可能是个坏主意的原因?您的个人服务将需要为相关数据存储一些识别值,我认为这里的主要问题只是让这个 ID 字段在您的不同服务中保持一致。您选择的内容只需要可靠且可预测,以便随着系统的发展保持简单易行。
如果您使用的是 RESTful HTTP,那么您已经拥有一个持久的、可收藏的资源标识,URLs(URIs,IRIs,如果你想要迂腐)。这些是您可以用来引用另一个微服务中的某个实体的 ID。
没有必要引入另一层ID,无论是国家代码还是数据库ID。这些东西无论如何都是你的微服务内部的,应该对所有客户端透明,包括其他微服务。
明确地说,我是说,您可以将 URI 存储到景点服务中的国家/地区。 URI 无论如何都不应该改变(尽管如果你收到永久重定向,你可能想准备改变它),你必须记住 URI无论如何,能够将其包含在景点表示中。
除了景点的 URI 之外,您实际上也不需要任何 "business key" 收藏夹。您可以将 URI 添加为书签,就像在浏览器中一样。
我想如果有一个 auth-service,还有 URIs 也用于识别个人用户。因此,在 "favorites" 服务中,您可以简单地 link 具有吸引力 URIs.[=10= 的用户 URI ]