需要明确的是,我并不是想将 Kafka 用作事件溯源的数据存储,而只是为了复制事件。
Kafka的Confluent Schema Registry似乎非常有趣,因为它可以验证生产者发送到主题的消息的模式。但是,据我了解,它将每个主题都视为一个容器文件——每个主题一个模式。
此限制不适用于事件源流,其中对于像File
您这样的单个聚合将具有多个消息模式:FileCreated
、FileMoved
、FileCopied
、FileDeleted
。将这些中的每一个放在一个单独的主题上会很复杂并且容易出错。
是否存在像 Schema Registry 这样支持同一主题的多个模式的工具?
更新
为了澄清,上面的每条消息都有不同的模式。例如:
FileCreated
:
{
type: "record",
name: "FileCreated",
fields: [
{ name: "id", type: "string" },
{ name: "name", type: "string" },
{ name: "path", type: "string" },
{ name: "size", type: "string" },
{ name: "mimeType", type": "string" },
{ name: "user", type: "string" },
{ name: "date", type: "long" }
]
}
FileMoved
:
{
type: "record",
name: "FileMoved",
fields: [
{ name: "id", type: "string" },
{ name: "from", type: "string" },
{ name: "to", type: "string" },
{ name: "date", type: "long" },
{ naem: "user", type: "string" }
]
}
FileDeleted
:
{
type: "record",
name: "FileDeleted",
fields: [
{ name: "id", type: "string" },
{ name: "date", type: "long" },
{ name: "user", type: "string" }
]
}