【问题标题】:Could two different microservice use the same external SDK两个不同的微服务是否可以使用相同的外部 SDK
【发布时间】:2022-01-31 01:49:12
【问题描述】:

我目前对如何在我们的微服务架构中实施解决方案存在冲突。而且,如果能对此事有更专业的意见,那就太好了。

我们正在使用第三方服务发送电子邮件,但是在我们可以使用上述服务之前,我们需要同步一个帐户。

现在我在两个微服务中使用第三方服务提供的 SDK。 在 account-ms 中,我为帐户同步创建了所有必要的功能。在 email-ms 中,我做了相应的电子邮件发送。

但是,我不确定在两个不同的微服务中使用(第三方 SDK)是否是正确的做法,或者我是否陷入了不良做法,我应该同时拥有两个流程(帐户同步和电子邮件发送) 在同一个微服务中,这将是唯一使用第三方 SDK 的微服务。

谢谢。

注意:account-ms 和 email-ms 都已经存在,并且在它们的域上具有其他相关功能。我没有为这个特定的集成从头开始创建它们。

【问题讨论】:

  • 视情况而定。您是否期望在不久的将来会有越来越多的微服务使用该 SDK?两个微服务是用相同的编程语言编写的吗?这个SDK经常更新吗?你可以在不同的微服务中同时使用多个 SDK 版本吗?等等……
  • @PeterCsala 尊重您的问题,是的,也许需要另一个微服务来实现 SDK:所有微服务都用相同的语言 (Java) 编写; SDK 它不经常更新,理想情况下我们希望在所有微服务中使用相同的 SDK 版本。谢谢。
  • 在这种情况下,我认为这是一个可行的设计。这里的关键是尽量避免依赖部署,使用多个版本的 SDK 并经常更新所有相关服务,以便在任何地方都有最新的 SDK。

标签: architecture microservices integration


【解决方案1】:

答案很简单:是的——这很常见。

但是,仅在多个服务中使用相同的库 (sdk) 与在两个服务之间具有功能依赖关系之间存在很大差异。

您总是希望非常了解服务依赖关系并尽可能避免它们。您的“帐户服务需要同步帐户”是什么意思并不是百分百清楚,但如果这意味着您的电子邮件服务必须调用帐户服务(或取决于帐户服务创建的持久状态) ) 每次在它可以获取电子邮件之前,您都会在服务之间引入硬依赖,并且您需要在两个微服务团队之间建立有关版本兼容性、发布计划、升级等的所有沟通渠道。在这种情况下(如果可行的话),如果每个使用电子邮件的服务都能够在不使用其他服务的情况下进行初始化,那可能会更好。

【讨论】:

    猜你喜欢
    • 2018-08-19
    • 2019-03-19
    • 2021-05-27
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 2015-06-08
    • 2018-07-04
    • 1970-01-01
    相关资源
    最近更新 更多