Apache Pulsar如何优化生产和消费流程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计779个文字,预计阅读时间需要4分钟。
1. Pulsar数据生产流程 客户端端调用Pulsar API进行数据生产操作,将生产的消息传递给生产者。
2. 生产端内部实现 生产端内部有一个MessageWriter类,基于此类实现数据的分发操作。
一、Pulsar数据生产流程
- 1、客户端调用pulsar提供给客户端的API,进行数据的生产操作,将生产的消息传递给producer。
- 2、在生产端内部有一个MessageWriter的类,基于这个类实现数据分发操作,默认方案为round-robin(轮询),同时为了提高效率,在一定的时间内,只会选择一个partition 除了支持轮询方案外,如果在传递消息指定key,会采用hash取模的方式确定要发送到那个partition,同时pulsar支持自定义分发策略。
- 3、客户端在此连接broker,根据要发送的partition获取对应服务的broker节点。
- 4、broker收到消息后调用bookkeeper的客户端并发去写多个副本。
- 5、broker端会等待bookkeeper写入完成,当broker收到所有副本的ack之后,会认为这条消息已经写入成功,broker会返回客户端,告知这条消息已经被持久化完成。
说明:整个写入操作,客户端不会跟zookeeper打交道,也不会和bookkeeper打交道,只需要和broker即可。
本文共计779个文字,预计阅读时间需要4分钟。
1. Pulsar数据生产流程 客户端端调用Pulsar API进行数据生产操作,将生产的消息传递给生产者。
2. 生产端内部实现 生产端内部有一个MessageWriter类,基于此类实现数据的分发操作。
一、Pulsar数据生产流程
- 1、客户端调用pulsar提供给客户端的API,进行数据的生产操作,将生产的消息传递给producer。
- 2、在生产端内部有一个MessageWriter的类,基于这个类实现数据分发操作,默认方案为round-robin(轮询),同时为了提高效率,在一定的时间内,只会选择一个partition 除了支持轮询方案外,如果在传递消息指定key,会采用hash取模的方式确定要发送到那个partition,同时pulsar支持自定义分发策略。
- 3、客户端在此连接broker,根据要发送的partition获取对应服务的broker节点。
- 4、broker收到消息后调用bookkeeper的客户端并发去写多个副本。
- 5、broker端会等待bookkeeper写入完成,当broker收到所有副本的ack之后,会认为这条消息已经写入成功,broker会返回客户端,告知这条消息已经被持久化完成。
说明:整个写入操作,客户端不会跟zookeeper打交道,也不会和bookkeeper打交道,只需要和broker即可。

