我正在尝试评估是否可以使用Kafka扩展我们当前的解决方案。 我可以轻松识别分区。当前,要求有1500个分区,每个分区每秒具有1-2个事件,但是将来可能会达到10000个分区。
但是我们的解决方案中有一部分我不知道如何在Kafka中解决。 问题是每个消息都包含一个字符串,而我想为整个主题中的每个字符串分配一个唯一的ID。因此,相同的字符串具有相同的ID,而不同的字符串具有不同的ID。这些ID不必是连续的,也不需要一直在增长。
然后,这些ID将在下游用作唯一键以标识那些字符串。字符串可以长数百个字符,因此我认为它们不会构成有效的键。
更高级的用法是消息可能具有不同的“种类”字符串,因此将有多个唯一的ID序列。消息将仅包含其中一些类型,具体取决于消息的类型。
另一种高级用法是,值不是字符串,而是结构,如果两个结构相同,则将是一条更为复杂的规则,例如,如果PropA相等,则结构相等;如果PropB相等,则结构相等相等。
说明问题:每个分区都是网络中的一台计算机。每个事件都是在计算机上执行的操作。需要按计算机对事件进行排序,以便更改计算机状态(例如,用户已登录)的事件可能会影响其他类型的事件,因此排序至关重要。例如。用户打开应用程序,写入文件,插入闪存驱动器等。我需要每个应用程序,文件,闪存驱动器或许多其他应用程序,以在所有计算机上都具有唯一标识符。然后将其用于计算下游的统计信息。有时,一个事件可以包含多个事件,例如。对特定闪存驱动器上的特定文件进行操作。
答案 0 :(得分:2)
免责声明:如果可以的话,我会将其添加为评论。
关于kafka and blockchain的帖子非常好。这是集体的头脑工作,我认为这可以解决您的ID可伸缩性问题。有关解决方案,请参阅“区块链:原因”。部分。所有学分归各自作者所有。
过程:
缺点:
问题:在没有问题上下文的情况下,很难估算出需要进一步解决的局限性。但是,假设计算出的解决方案具有有限的性质,那么您应该没有规律地缩放解决方案的问题。
底线: 如果没有对速度/成本/质量方面的要求的了解,就很难通过工作示例给出更好的后盾。 CPU云扩展可能相对便宜,数据存储-取决于时间,要存储多长时间和数据量,重播能力等。这是一项很好的工作。原型?参考文章中的概念。