gpt4 book ai didi

c# - 如何在微服务分布式环境中创建一个简短易读的 UUID

转载 作者:太空狗 更新时间:2023-10-29 23:04:57 24 4
gpt4 key购买 nike

我正致力于使用 CQRS 和事件溯源将一个 super 单体 Web 服务分解为一个微服务方法。有了这个,并考虑到以前的架构依赖于每个表的 SQL Server 增量标识号,分布式系统依赖数据库是 Not Acceptable ,因为我们现在将对系统中的事件进行各种预测。

但我们仍然必须保持关系并传输 id 以进行分析、API 调用等。显而易见的选项是 GUID,在您到达 GET 请求点之前它看起来不错,http://awesomedomain .com/users/98e3b2ab-3c69-4077-aea1-38d22e79b007,嗯,不是那么漂亮,有点麻烦,但它会起作用。众所周知,将 GUID 作为数据库中的索引键可能会影响性能。

在此处查看一些答案后,尝试根据 EPOCH UNIX timestamp ticks 生成 ID , shorten the GUID , 或 this interesting approach (但发现不是全局解决方案),每个解决方案都不会真正保证全局唯一性,除了短 GUId 的,但仍然不清楚。

另一种选择是使用带有分布式锁 (Redis) 的 Guid 服务来生成 EPOCH UNIX tick id,但如果您有数千个并发“创建”请求,这可能会给我们带来性能损失。

我们真的应该费心去缩短 GUID 还是寻找另一个更“人类可读”的解决方案?我们可以实现任何其他全局唯一标识符解决方案吗?

最佳答案

你拥有的是好的。

它可能不是人类可读的,但这正是它应该是的。顺序 ID 很容易被猜到并且不利于安全。 GUID 很好地填补了这一空白。

根据您的系统结构,您实际上可以将 int ID 作为主键,同时也保留您的 GUID,它们不必是主键。然而,这并不总是可能的。

关于c# - 如何在微服务分布式环境中创建一个简短易读的 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55986736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com