在微服务架构中生成人性化的代码

时间:2018-10-10 14:38:25

标签: design-patterns architecture

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

我认为每次调用设施微服务以了解最后的代码号都不是一个好主意。

现在,我正在考虑使用像Rabbitmq这样的队列,该队列将保存一个facilityId和最后一个错误代码,并在每次请求该代码时对其进行更新。

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

更新

我还考虑只将设施ID和最后的代码存储在数据库中,并将其初始值作为初始值,这似乎是个好主意

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

这里有一些选择

  • 在每次创建问题时同步询问Facility,以获得一个问题编号。参见权衡here
  • 使用某种自动增量逻辑将(Facility, IssueId)的映射存储在Issues微服务中。这要求将设施变更通知给问题。参见权衡there
  • Facility设为问题创建的来源。如果Facility服务中存在其他副作用,可能会更聪明。