【问题标题】:Generating human-friendly codes within a microservice architecture在微服务架构中生成人性化代码
【发布时间】:2018-10-11 17:28:05
【问题描述】:

当在 GitHub 中创建问题时,它在存储库中具有唯一标识符(如 #1532)。如何在微服务架构中实现这种机制?假设我有 2 个服务设施和问题,当创建问题时,它必须在某个设施内具有唯一的人类可读代码。

我认为每次调用Facilities 微服务都知道最后一个code number 不是一个好主意。

现在我正在考虑使用像 rabbitmq 这样的队列,它会保存一个 facilityId 和最后一个错误代码,并在每次请求代码时更新它。

我不太确定这种方法的所有缺点。还有其他更好的方法来解决这个问题吗?任何帮助将不胜感激

更新

我还在考虑将设施 ID 和最后一个代码与初始值一起存储在数据库中,这现在似乎是个好主意

【问题讨论】:

    标签: design-patterns architecture


    【解决方案1】:

    分布式系统中的Id生成为a problem which has been around for a while

    对人类友好不包括使用 uuid 的最简单方法...

    我个人建议不要自己实现它,可能有多种工具可以解决它,例如 the id generator of apache ignite

    【讨论】:

      【解决方案2】:

      这里有几个选项

      • 在每个问题创建时同步向Facility 询问问题编号。请参阅权衡here
      • 使用某种自动增量逻辑在问题微服务中存储(Facility, IssueId) 的映射。这需要在设施更改时通知问题。请参阅权衡there
      • 使Facility 成为问题创建的来源。如果在打开问题的 Facility 服务中存在其他副作用,可能会更聪明。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-28
        • 2018-09-25
        • 2014-01-08
        • 2015-12-26
        • 2018-09-11
        • 2020-04-11
        • 2020-09-02
        相关资源
        最近更新 更多