深入拆解消息队列 47 讲
许文强
前腾讯云 Kafka 技术负责人
5385 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 50 讲
深入拆解消息队列 47 讲
15
15
1.0x
00:00/00:00
登录|注册

33|Schema:如何设计实现Schema模块?

你好,我是文强。
这节课我们来看看消息队列中的 Schema 模块。看到 Schema 这个词,你可能会有点陌生,从而产生一些疑问。比如 Schema 是什么?它有什么用?什么时候可以用到它?这节课我们就重点解决这三个问题。

Schema 是什么

Schema 翻译过来是“模式”的意思。它表示的是数据结构定义,即定义数据是什么格式的。
如下图所示,默认情况下消息数据在生产者、Broker、Consumer 的全流程中,代码层面没有对消息内容格式进行限制或校验。
因此存在的问题是:消费者和生产者需要线下对齐数据格式,然后消费者根据约定的消息格式编写相应的处理逻辑。当生产端的数据格式或者某个字段的数据类型发生变化时,如果没有及时通知下游消费者,消费者就会无法解析数据,导致数据消费异常。
Schema 就是用来解决全流程中的数据格式的规范定义问题,即保证上下游数据传递过程中,消息可以根据指定的格式和定义进行传递
举个例子,在订单场景中,一般通过消息管道传递订单数据,实现系统解耦。因此每个订单数据必须包含订单 ID(OrderID)字段,否则下游就无法处理。此时就可以启用 Schema,在生产端规范数据传递,在 Broker 端进行数据校验,在消费端根据指定的格式进行数据解析。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

消息队列中的Schema模块设计与实现是本文的主要内容。Schema在消息队列中的应用场景和技术方案设计都得到了详细讨论。文章深入探讨了Schema Register的实现形态和格式,以及消息内容数据的序列化和反序列化。通过对Schema模块的设计原理和实现方式进行阐述,为消息队列系统的设计和实现提供了有益的参考。Schema的核心在于保证数据在传递过程中按照指定的格式和定义进行传递,从而解决上游数据变更导致的下游消费失败问题。Schema Register作为Schema特性的核心模块,一般是一个独立的服务,用来保存Schema信息,并提供管理Schema的接口。Broker和客户端在启动时都需要配置Schema Register的地址,然后存储Schema信息。生产端发送时会对数据进行校验,Broker也会对收到的数据进行校验,消费者消费到数据时也会进行比对,从而保证链路的数据是符合规范的。思考题包含了实现统一通用的Schema Register的意义和难点,以及Pulsar和Kafka的Schema实现对比。文章内容丰富,涵盖了消息队列中Schema模块的方方面面,对读者了解消息队列系统的设计和实现具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入拆解消息队列 47 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • Geek_ec80d2
    pulsar并没有使用独立的注册中心
    2023-09-13归属地:北京
    1
  • 贝氏倭狐猴
    已个人经验,schema,尤其是强制schema验证还是会让使用方不太适应。一方面,用户不习惯于这种强制校验方式,经常忘记,出错才发现并让管理员关闭;另一方面,shema属于业务接口范畴,是否需要绑定在中间件里面,这个有点跨层,举例:schema应和具体消息中间件选型无关,但存储schema则难以迁移。
    2023-09-04归属地:江苏
    1
    1
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部