您当前的位置: 首页 >  ar

Bulut0907

暂无认证

  • 2浏览

    0关注

    346博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Apache Pulsar的数据写入和读取流程,及读写异常处理流程

Bulut0907 发布时间:2022-05-12 09:40:22 ,浏览量:2

目录
  • 1. 数据写入流程
  • 2. 数据读取流程
  • 3. 读写异常处理流程

1. 数据写入流程

说明: 写入操作客户端只和broker交互, 不和zookeeper和bookkeeper交互

  1. 客户端通过produce进行消息的发送
  2. produce基于内部的MessageWriter类进行分区操作。分区方法有round-robin(默认)、根据key进行hash分区、自定义分区
  3. produce连接partition对应的broker节点
  4. broker调用Bookkeeper客户端并发写多个副本到Bookie
  5. 当broker收到所有副本的ack确认之后, broker通知客户端消息已经被持久化完成
2. 数据读取流程
  1. consume连接broker,获取到读取消息的topic的分片所在的broker地址,然后连接该broker地址
  2. 如果消息在broker有缓存,将消息放入receiver队列,consume从队列读取;如果broker没有缓存,broker通过Bookeeper客户端从bookie的任意副本读取数据,返回给客户端
3. 读写异常处理流程
  • produce产生失败:当出现网络原因等,在超时时间内进行重试一定次数
  • broker端出现宕机:broker是无状态的。由其它broker继续提供服务
  • Bookkeeper出现宕机:由其它副本提供消息读取服务 存储节点只负责数据存储, bookkeeper本身是一个集群, 故如果只挂掉一个bookie, 并不影响, 所以broker是不会感知的, 除非所有的bookie都挂掉, 没有足够的副本去写入数据.
  • consume产生失败:消息没有被consume进行ack确认,下次可以继续消费。也可以通过failover的subscription进行consume故障转移
关注
打赏
1664501120
查看更多评论
立即登录/注册

微信扫码登录

0.0373s