考虑 N 个数据源,每个数据源都有一个事件流
Event{
long id;
Object data;
}
一个流中的某些事件可能具有相同的 ID,因为事件可能跨越更新、新建等。因此我们可以看到以下两个流:
<1, 2, 3, 1, 5, 2>
<3, 3, 4, 5, 4>
我现在想将这些合并到一个流中。每个订单 ID 肯定是唯一的。
简单的方法是使用字符串而不是长字符串并附加源数字,生成如下内容:
<"1 - 1", "1 - 2", "1 - 3", "2-3", "2-3" ... >
是否有更多的内存协同影响方式/更好的方法?
最佳答案
您的字符串解决方案很好,而且实际上很常见。如果您有兴趣使其更加紧凑,您可能需要使用整数元组。
分布式系统中使用的另一种常见方法是使用范围分配:有一个中央(单例)服务器来分配每个客户端可以命名其 ID 的范围。例如,此类服务器可以将范围 0-99 分配给 client1,100-199 分配给 client2 等。当客户端耗尽分配的范围时,它会再次联系服务器以分配新的范围。
关于java - 为多个源生成唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13515912/