首页 > 其他分享 >Pulsar基本介绍

Pulsar基本介绍

时间:2022-10-15 16:34:55浏览次数:53  
标签:基本 主题 确认 Broker 介绍 消息 key Pulsar

基本概念

  • 订阅组:类似于Kafka中的消费者组,不同订阅组之间消费消息互不干扰
  • 主题:分为非分区主题和分区主题
    • 非分区主题:一个主题和一个Broker绑定
    • 分区主题:由一组非分区内部主题组成,每个内部主题绑定一个Broker(消息可以发送到多个Broker,避免受限于单节点性能)
  • Broker:服务节点,负责数据校验、负载均衡、和生产者消费者交互、将消息转发给Bookie节点等功能
  • Bookie:存储节点,BookKeeper中的节点
  • Ledger:存储数据的集合,生产者会将数据写入Ledger,消费者从中读取
  • Entry:Ledger中的每个数据都是一个Entry
  • 租户:Pulsar支持多租户
  • 命名空间:一个租户可以有多个命名空间,一个命名空间可以有多个主题
  • Cluster集群:不同Cluster集群可以相互复制数据,实现跨地域复制,一个Broker节点运行在一个Cluster集群下

应用

租户

  • pulsar-admin脚本管理租户、命名空间、主题

命名空间

  • 消息保留和过期
    • set-retention:设置消息保留策略(数据量或时间)
    • set-backlog-quota:设置backlog quota策略,对未确认消息进行处理,策略有三种:
      • Broker抛出异常
      • Broker正常运行,但是对之后未确认的消息不做持久化处理
      • 删除之前backlog积压的消息
    • set-message-ttl:设置消息生存时间,未确认的消息超过该时间会自动确认
  • 持久化策略:set-persistence
  • 消息投递速率:set-dispatch-rate

主题

  • Pulsar支持持久化主题和非持久化主题,前缀分别为persistent和non-persistent
  • Pulsar提供默认的命名空间default,默认租户public

客户端

生产者

  • 如果消息过大,生产者可以将消息分块,每个分块称为chunk,按顺序发送给Broker
  • 访问模式
    • Shared:允许多个生产者同时发布消息给主题,默认
    • Exclusive:只允许一个生产者发送消息给主题,其他生产者连接会报错
    • WaitForExclusive:同上,但是不报错只是阻塞,等连接的生产者下线后,会有一个被阻塞的生产者连接,其他的继续阻塞
  • 路由模式:决定每条消息被发送到哪个内部主题
    • RoundRobinPartition:如果消息指定key,按照key的Hash值将该消息分配给对应的内部主题,如果没有指定key,会将一个时间段内没有key的消息发送给同一个内部主题,每隔10ms以轮询方式切换到下一个内部主题
    • SinglePartition:如果消息指定key,按照key的Hash值将该消息分配给对应的内部主题,如果没有指定key,随机选择一个内部主题
    • CustomPartition:自定义路由器
  • Pulsar支持异步发送消息
  • 提供了生产者拦截器ProducerInterceptor

消费者

  • 订阅模式:支持四种订阅模式
    • Exclusive:独享,一个订阅组只绑定一个消费者
    • FailOver:灾备,一个订阅组绑定多个消费者,Pulsar从中选择一个作为主消费者,将所有的消息发送给该消费者,该消费者因故下线,重新选择主消费者
    • Shared:共享,一个订阅组绑定多个消费者,轮询方式分发消息
    • Key_Shared:键共享,相同key发送到同一个消费者(该模式需禁用消息批次机制)
  • 确认方式:Pulsar的每条消息都有一个消息Id,消费成功的消息Id会作为ACK信息发送给Broker
    • 单条确认:每条消费成功的消息都发送ACK信息
    • 累计确认:只将最后一条消费成功的消息Id发送给Broker
    • 消息批次中的单条确认:单条确认消息批次中的部分消息,不需要等一个批次的所有消息全都消费成功后统一确认
  • 取消确认:消费消息失败可以通过Consumer.negativeAcknowledeg取消确认,要求Broker重新投递
  • Pulsar支持重试主题和死信主题
  • seek方法可以重置消费位置
  • Pulsar支持同时订阅多个主题

Schema

  • 简单类型:默认使用byte[]作为Schema类型
  • 复杂类型
    • KeyValue
      • INLINE:key、value一起作为消息的value
      • SEARATED:key作为消息key,value作为消息的value
    • Struct实体类:
      • AvorSchema
      • JsonSchema
      • ProtobufSchema
    • GenericRecordBuilder自定义Schema
  • AUTO模式:不知道Schema结构,可以使用该模式

标签:基本,主题,确认,Broker,介绍,消息,key,Pulsar
From: https://www.cnblogs.com/jordan95225/p/16794445.html

相关文章

  • C语言文件基本操作
    什么是文件与普通文件载体不同,文件是以硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等等。文件通常具有点+三个字母的文件扩展名,用于指示文件类型(......
  • HM-SCAli1【微服务介绍】
    1课程介绍https://www.bilibili.com/video/BV1R7411774f2系统架构演变3微服务架构介绍3.1微服务架构的常见问题这么多小服务,如何管理他们?(服务治理注......
  • Redis6 新功能介绍
    特性的详细细节在此不赘述,我们来看Redis6.0,。Redis6.0版本特性大约可以分为四类,如下表新特性内核优化应用优化其他ACL权限管控(包括ACLLOG)过期Key回收优化......
  • Beats 入门实战(2)--FileBeat 介绍
    本文主要介绍Filebeat的相关概念及基本使用,相关的环境及软件信息如下:CentOS 7.9、FileBeat8.2.2、Logstash8.2.2、Elasticsearch8.2.2。1、Filebeat简介1.1、File......
  • LeetCode224 基本计算器
     idea:刚开始是打算分类讨论,建立了数字栈和字符栈,按照传入字符当时两个栈的基本情况分类,结果讨论完之后分类太麻烦,导致分析完了之后漏洞不少。我觉得这道题难点在于括号......
  • 基本类型拓展知识
    浮点数拓展浮点数分为float和double浮点数所表示出来的数是有限的,是接近数但是不等于数;所以浮点数是不能用来作比较的作比较可以用BigDecimal(教学工具类)publicclassS......
  • java的基本语法(关键字到变量)
    关键字定义:在java程序中被赋予特殊含义的英文单词特点:关键字所有的字母都为小写标识符定义:凡是可以自己起名字的地方都叫标识符规则:1可以由26个字母,0~9,-,¥组成2不能以......
  • amfe-flexible 包设置rem的基本值
    下载安装:npmi-Samfe-flexiblegw:GitHub-amfe/lib-flexible:可伸缩布局方案 下载2个第三方包即可实现移动端适配amfe-flexible是配置可伸缩布局方案,主要是将1......
  • 爬虫的基本原理
    一、爬虫的基本原理网络爬虫的价值其实就是数据的价值,在互联网社会中,数据是无价之宝,一切皆为数据,谁拥有了大量有用的数据,谁就拥有了决策的主动权。爬虫聚合站点https://......
  • ES6 基本认识
    1、什么是ES6?ES6指的是ECMAScript6.0,是JavaScript语言的一个标准。其目标是使JavaScript可以用来编写复杂的大型的应用程序,成为企业级开发的语言。2、ES6与J......