首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Pulsar:Schema Registry介绍

Pulsar:Schema Registry介绍

作者头像
林一
发布于 2019-03-14 07:51:09
发布于 2019-03-14 07:51:09
1.8K0
举报
文章被收录于专栏:MessageQueueMessageQueue

Schema Registry提供了元数据的服务,它可以存储多个版本的Schema,支持不同的兼容性配置以及根据兼容性的要求进行Schema的演进。本文介绍Apache Pulsar的Schema Registry的原理和实现。

Schema Registry

类型安全在任何围绕消息总线(像Kafka、Pulsar、RocketMQ这样的系统)构建的应用系统中都是非常重要的。生产者和消费者需要某种机制来协调消息数据的类型,以避免出现各种潜在的问题,比如序列化和反序列化的方式不一致。类型安全通常有两种处理方式:

  • client-side:客户端即负责消息的序列化和反序列化,并且需要保证生产和消费的消息的类型安全。说白了就是把“一切”交给用户,消息体就是byte[],生产者给的是什么就写入什么。消费者拿到消息后基于和生产者的约定,将byte[]的数据反序列化成特定类型的数据。这种方式最大的问题是生产者和消费者之间是基于约定的,一旦生产者写入了非约定的数据,下游的消费者将无法解析数据(往往这种“脏”数据的问题都是非常难以处理的)。
  • server-side:数据安全由服务端保证,生产者和消费者需要和服务端来确定消息类型。这种方式真正意义上的保证的数据的类型安全。避免了Producer写入非法数据的问题。

Pulsar对两种方式都进行了支持,可以任意选择其中的一种方式使用,也可以混合两种方式使用,比如生产者使用第一种方式,而消费者采用第二种方式:

  • 第一种方式而言,生产者和消费者都处理byte[]数据,系统将“一切”交给用户
  • 第二种方式,Pulsar构建了Schema Registry来支持上传Schema,由Schema来指明数据类型并进行数据验证。

也可以把直接采用byte[]作为消息体的使用方式作为一种Schema的特例,它的Schema指明了消息内容是byte[]类型的,这样可以在一个更高的层次上来抽象一个MQ系统的设计。

Architecture

Pulsar将Schema数据存储在Bookie上,所有从架构上并没有因为支持Schema而引入额外的组件。

Schema存储在Bookie上,Schema的写入、读取操作都通过Broker和Bookie交互,这个逻辑和消息的写入读取操作是一致的,那么不需要额外考虑Schema的可用性和可靠性的问题(如果使用其他设备来支持Schema Registry,那么就需要考虑高可用和高可靠的问题,比如Schema Registry不可用导致消息获取不到Schema无法解析,那么就影响系统整体的可用性了)。

如上图,Pulsar在服务端主要由两个组件来服务Schema:

  • SchemaRegistryService:SchemaRegistry相关接口
  • SchemaStorage:Schema存储接口,提供了基于Bookie的存储实现

整体上看,Pulsar实现Schema Registry的方式非常优雅,没有给系统增加额外的依赖,这也得益于系统本身计算和存储分离的架构。

How Schemas Work

Pulsar的Schema应用在Topic级别,Producer和Consumer“上传”

自己的Schema。

Schema数据结构:

  • name: 在Pulsar中,schema的name是它应用的topic的名称
  • paylod: schema的二进制数据
  • type: schema的类型,有JSON、AVRO等
  • properties: Map<String,String>格式,用于存一些拓展的信息

Schema Example

以上图为例,当Producer连接到Broker时:

  • topic不存在schema:schema被上传的broker并存储到BookKeeper
  • schema已经存在:broker校验producer的schema是否是兼容的,并决定是否存储,如果是新的schema则以新的版本号存储schema

总结

本文简单的介绍了Pulsar的Schema Registry,另外最近Pulsar发布了2.3.0版本,引入了更多的Schema类型,在Pulsar Admin中添加了Schema的管理机制来更好的使用Schema。相对于Pulsar“自包含”的实现Schema Registry能力,Kafka则采用Confluent Schema Registy来实现Schema的能力。无论是Pulsar还是Kafka,都将Schema能力纳入到自己的体系中,这是从一个简单的消息的Pub/Sub系统到一个流计算平台重要的组件。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MessageQueue 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
究极缝合怪 | Pulsar核心概念和特性解读
Pulsar 是一个用于服务器到服务器的消息系统,具有多租户、高性能等优势。Pulsar 最初由 Yahoo 开发,目前由 Apache 软件基金会管理。
王知无-import_bigdata
2022/03/11
2.4K0
究极缝合怪 | Pulsar核心概念和特性解读
Apache Pulsar 技术系列 - Pulsar 总览
导语 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案,数据持久化依赖 Apache BookKeeper 实现,支持多租户、低延时、读写分离、跨地域复制、快速扩容、灵活容错等特性。本文将从以下几个方面为大家介绍 Apache Pulsar的设计原理和特性。 1、Apache Pulsar 架构 2、架构设计的优势 3、Pulsar 特性 4、总结 Apache Pulsar 架构 存储计算分离 Apache Pulsar 是 Pub/Sub 模型的消息系统,并且从设计上做了存储和
腾讯云中间件团队
2023/03/24
1.8K1
Apache Pulsar 技术系列 - Pulsar 总览
大伙评评理,Kafka与Pulsar 谁更牛?
本文向读者介绍两个优秀的分布式消息流平台:Kafka与Pulsar。 Apache Kafka(简称Kafka)是由LinkedIn公司开发的分布式消息流平台,于2011年开源。Kafka是使用Scala和Java编写的,当下已成为最流行的分布式消息流平台之一。Kafka基于发布/订阅模式,具有高吞吐、可持久化、可水平扩展、支持流数据处理等特性。 Apache Pulsar(简称Pulsar)是雅虎开发的“下一代云原生分布式消息流平台”,于2016年开源,目前也在快速发展中。Pulsar集消息、存储、轻量化
江南一点雨
2022/09/20
8320
大伙评评理,Kafka与Pulsar 谁更牛?
【12图】你管这破玩意叫Pulsar
这两年pulsar发展比较快,有好多大公司引入了pulsar,相关的资料和课程也多了,今天一起来了解一下pulsar这款中间件。
jinjunzhu
2022/09/23
8630
【12图】你管这破玩意叫Pulsar
pulsar总览
pulsar 是 Apache 的顶级项目, 定位为下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性,被看作是云原生时代实时消息流传输、存储和计算最佳解决方案。Pulsar 是一个 pub-sub (发布-订阅)模型的消息队列系统。
leobhao
2023/03/08
1.4K0
pulsar总览
消息中间件基础知识-从RabbitMQ、RocketMQ、Kafka到Pulsar
本文梳理笔者的MQ知识,从消息中间件的基础知识讲起,在有了基础知识后,对市面上各主流的消息中间件进行详细的解析,包括 RabbitMQ、RocketMQ、Kafka、Pulsar,最后再横向对比这几款主流的消息中间件。
知码行者
2023/04/03
1.1K0
云原生消息流系统 Apache Pulsar 在腾讯云的大规模生产实践
导语 由 InfoQ 主办的 Qcon 全球软件开发者大会北京站上周已精彩落幕,腾讯云中间件团队的冉小龙参与了《云原生机构设计与音视频技术应用》专题,带来了以《云原生消息流系统 Apache Pulsar 在腾讯云的大规模生产实践》为主题的精彩演讲,在本篇内容中,将重点围绕腾讯云近期在 Apache Pulsar 稳定性和性能方面优化的工作展开介绍,为开发者提供参考。 作者简介 冉小龙 腾讯云高级研发工程师 Apache Pulsar committer RoP maintainer Apache Pul
腾讯云中间件团队
2023/02/16
1.3K0
云原生消息流系统 Apache Pulsar 在腾讯云的大规模生产实践
Pulsar 技术系列 - 深度解读Pulsar Schema
导读 Apache Pulsar 是一个多租户、高性能的服务间消息传输解决方案,支持多租户、低延时、读写分离、跨地域复制、快速扩容、灵活容错等特性。数平MQ团队对 Pulsar 做了深入调研以及大量的性能和稳定性方面的优化。本文是Pulsar技术系列中的一篇,主要介绍Pulsar Schema。 为什么使用Pulsar Schema 如果 producer 端要发送 POJO 类型的数据,则 Pulsar 需要一套序列化和反序列化工具,先将对象转化为字节数据再发送出去,下面为有无 schem
腾讯云中间件团队
2021/07/12
3.4K0
下一代消息队列pulsar到底是什么?
之前琢磨了很久一直想写一篇pulsar相关的文章,但是一直知识储备不够,对于很多细节还是不了解,于是查了很多资料,总算是可以凑出一篇文章了。
用户5397975
2021/02/03
9.7K0
下一代消息队列pulsar到底是什么?
百万级 Topic,Apache Pulsar 在腾讯云的稳定性优化实践
作者简介 冉小龙 腾讯云高级研发工程师 Apache Pulsar committer RoP maintainer Apache Pulsar Go Client、Pulsarctl 与 Go Functions 作者与主要维护者 Apache Pulsar 作为云原生时代消息流系统,采用存储计算分离架构,支持大集群、多租户、百万级 Topic、跨地域数据复制、持久化存储、分层存储、高可扩展性等企业级和金融级功能。Apache Pulsar 提供了统一的消费模型,支持消息队列和流两种场景,既能为队列场景提
腾讯云中间件团队
2022/09/27
1.2K0
百万级 Topic,Apache Pulsar 在腾讯云的稳定性优化实践
个推基于 Apache Pulsar 的优先级队列方案
当 APP 有推送需求的时候, 会向个推发送一条推送命令,接到推送需求后,我们会把APP要求推送消息的用户放入下发队列中,进行消息下发;当同时有多个APP进行消息下发时,难免会出现资源竞争的情况, 因此就产生了优先级队列的需求,在下发资源固定的情况下, 高优先级的用户需要有更多的下发资源。
个推
2019/04/15
3K0
个推基于 Apache Pulsar 的优先级队列方案
从Kafka到Pulsar——数据流演进之路 | 青训营笔记
提供批/流数据处理能力、各类组件提供各类Connect、提供Streaming/Function能力、根据数据schema灵活的进行数据预处理
鳄鱼儿
2024/05/21
3840
从Kafka到Pulsar——数据流演进之路 | 青训营笔记
对 Kafka 和 Pulsar 进行性能测试后,拉卡拉将消息平台统一换成了 Pulsar
拉卡拉支付成立于 2005 年,是国内领先的第三方支付企业,致力于整合信息科技,服务线下实体,从支付切入,全维度为中小微商户的经营赋能。2011 年成为首批获得《支付业务许可证》企业的一员,2019 年上半年服务商户超过 2100 万家。2019 年 4 月 25 日,登陆创业板。
肉眼品世界
2021/06/08
9070
Pulsar 介绍与部署
Apache Pulsar 是灵活的发布-订阅消息系统(Flexible Pub/Sub messaging),采用计算与存储分离的架构。雅虎在 2013 年开始开发 Pulsar ,于 2016 年首次开源,目前是 Apache 软件基金会的顶级项目。Pulsar 具有支持多租户、持久化存储、多机房跨区域数据复制、高吞吐、低延迟等特性。
Se7en258
2021/07/01
3.4K0
Pulsar与Rocketmq、Kafka、Inlong-TubeMQ,谁才是消息中间件的王者?
导语 | Pulsar作为下一代消息中间件的典型代表,在设计和实现上面都具备很好的前瞻性,综合考量了业界现存的一些比较常用的、优秀的消息中间的架构设计、适用场景、运营中的问题等,如目前用的比较多的Kafka、Rocketmq、Inlong-TubeMQ等。本文仅从设计角度出发,说明下Pulsar与Kafka、Rocketmq及腾讯开源的Inlong-TubeMQ在实现上的几点区别和可能遇到的问题,供大家参考。 一、云原生多租户设计 (一)分级命名 Pulsar原生支持多租户设计,非常适合作为云产品进
腾讯云开发者
2021/10/27
1K0
Kafka基础篇学习笔记整理
KafkaProducer会将消息先放入缓冲区中,然后由单独的sender线程异步发送到broker服务端,那么既然消息是批量发送的,那么触发批量发送的条件是什么呢?
大忽悠爱学习
2023/04/23
4.1K0
Kafka基础篇学习笔记整理
Redis、Kafka 和 Pulsar 消息队列对比
导语 | 市面上有非常多的消息中间件,rabbitMQ、kafka、rocketMQ、pulsar、 redis等等,多得令人眼花缭乱。它们到底有什么异同,你应该选哪个?本文尝试通过技术演进的方式,以redis、kafka和 pulsar为例,逐步深入,讲讲它们架构和原理,帮助你更好地理解和学习消息队列。文章作者:刘德恩,腾讯IEG研发工程师。
架构之家
2022/07/12
1.1K0
Redis、Kafka 和 Pulsar 消息队列对比
颠覆Kafka的统治,新一代云原生消息系统Pulsar震撼来袭!
导语 | 在信息流场景,内容的请求处理、原子模块调度、结果的分发等至关重要,将会直接影响到内容的外显、推荐、排序等。基于消息100%成功的要求,我对Pulsar进行了调研,并采用Pulsar实现消息的可靠处理。本文主要参考Pulsar的官方文档和技术文章,对Pulsar的特性、机制、原理等进行整理总结。 一、Pulsar概述 Apache Pulsar是Apache软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多
腾讯云开发者
2022/01/12
9150
Schema Registry在Kafka中的实践
众所周知,Kafka作为一款优秀的消息中间件,在我们的日常工作中,我们也会接触到Kafka,用其来进行削峰、解耦等,作为开发的你,是否也是这么使用kafka的:
xdd
2022/12/13
3.6K0
Schema Registry在Kafka中的实践
Kafka精进 | 一文读懂Producer消息发送机制
前面我们总结了broker端的核心参数,一些服务端原理细节后面文章再聊。本文我们重点讨论Producer端的消息发送机制,希望通过本文我们能整体掌握Producer端的原理。
大数据技术架构
2020/04/21
2.7K1
Kafka精进 | 一文读懂Producer消息发送机制
推荐阅读
相关推荐
究极缝合怪 | Pulsar核心概念和特性解读
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档