微服务的数据传输、安全部署与监控
1. 使用 Avro 进行数据传输
在 Kafka 主题上发布的键和值必须有相关的序列化器和反序列化器(SerDes)。例如,之前的示例中,Kafka 消费者使用 LongDeserializer 处理键,使用 StringDeserializer 处理值;对应的 Kafka 生产者则分别使用 LongSerializer 和 StringSerializer 来发布键和值。
由于微服务可能使用各种编程语言编写,并且可能需要通过 Kafka 主题与其他服务协作,依赖特定语言的 SerDes 并不是一个好选择。
Avro 是一种与语言无关的数据序列化格式,支持大多数知名的编程语言。它有自己定义模式的声明式方法,可以映射到描述实体的业务模型。一旦定义了模式,消息在生产者端根据该模式进行编码,然后在消费者端使用相同的模式进行解码。只要生产者和消费者都能访问该模式,它们就可以通过 Avro 消息进行通信,而不受所使用的编程语言的限制。
在 Clojure 中,可以使用 Avro Clojure 库 abracad ,它是 Avro API 的包装器,能很好地与 Clojure 应用集成。要使用 abracad ,需在 project.clj 文件中包含依赖 [com.damballa/abracad "0.4.13"] 。依赖准备好后,可按以下示例定义 Avro 的 SerDes,并供 Kafka
超级会员免费看
订阅专栏 解锁全文
170万+

被折叠的 条评论
为什么被折叠?



