本文会首先介绍Pulsar的分级存储。而后通过一个示例,演示在分级存储中怎么应用Amazon S3作为二级存储。

介绍

Pulsar中的每个Topic由一列有序的的段(Segment)列表组成。Pulsar只会写入其中的最初一段。 除最初一段之外,之前的所有段都曾经被密封了,不能再往其中追加数据,这就是Pulsar的基于段(Segment)的存储构造。

Pulsar的基于Segment的存储架构,反对一个Topic的空间大小存储满整个存储集群。然而随着要保留的Partition的数据的逐步增多,会让存储变的低廉。解决这个问题的一种策略就是应用分级存储(Tiered Storage)。

应用分级存储的一个场景是用户心愿对一个比拟大的Topic的数据保留比拟长的工夫。比方一个Topic中蕴含所有客户的点击记录,咱们能够用这个topic中的数据来训练举荐零碎。如果这个Topic的数据被始终保留着,当训练的算法扭转后,咱们就能够从新利用这些历史数据来训练新的举荐零碎。

Pulsar的分级存储性能容许将较旧的积压数据卸载到二级存储中做长期存储,从而开释BookKeeper中的空间,进而升高存储老本。应用分级存储,咱们能够将一个Topic中的老的数据段(Segment)主动从BookKeeper搬出到更便宜的二级存储。对Client来说,整个过程是通明无缝的。

当Offload被手动或者主动触发之后,Broker会一个接一个地将一级存储中的段,搬移到二级存储中。

Pulsar目前反对应用S3,Google-Cloud-Storage作为二级存储。用户能够灵便配置Topic想要保留在BookKeeper(一级存储)中的大小,和数据在搬移到二级存储后多久(默认4小时)从BookKeeper中删除。

咱们在这篇文章中会应用S3作为一个例子,来演示怎么应用Pulsar的这个个性。

Operations With S3

在这个示例中应用的是Pulsar-2.1.1版本,次要蕴含3个步骤:

  • 在Amazon S3(https://s3.console.aws.amazon...)中创立一个bucket;
  • 下载Pulsar包,为Pulsar的Broker配置Offload,用Standalone模式启动Pulsar;
  • 用Pulsar的producer并产生数据,触发Offload,并验证。

一, 在S3中创立Bucket

  1. 登陆AWS console,抉择S3服务:

  1. 创立一个bucket,点击“Create bucket”, 填上Bucket的名字,而后点击next并始终点击确认。

  1. 通过下面的操作,能够看到一个新的Bucket曾经被创立了。

  1. 确认在本机上配置好了aws的access

二, 下载Pulsar包,并配置

  1. 从Pulsar的官网(http://pulsar.apache.org/en/d...)下载最新的Pulsar Binary文件(apache-pulsar-x.x.x-bin.tar.gz) ,解压,筹备批改配置文件conf/standalone.conf。

  1. 批改配置文件conf/standalone.conf中对于Offload的选项,设置第一步中创立的bucket:
 managedLedgerOffloadDriver=S3 s3ManagedLedgerOffloadBucket=offload-test-aws s3ManagedLedgerOffloadRegion=us-east-1

批改配置文件conf/standalone.conf中每个segment的大小配置,这使得每个Segment更小,更容易产生新的segment。

  1. 在终端用standalone模式启动Pulsar:

运行命令 bin/pulsar standalone

三, 在Pulsar中产生数据,触发Offload,并验证

  1. 在终端中启动一个消费者,保障将要产生数据不会因为没有消费者被抛弃掉:

bin/pulsar-client consume -s “my-sub-name“ my-topic-for-offload

  1. 开一个新的终端窗口,运行上面命令2次,产生2000条message,保障在topic中有两个Segment,这样第一个segment能够被搬移到S3上。

bin/pulsar-client produce my-topic-for-offload --messages "hello pulsar this is the content for each message" -n 1000

  1. 用命令行手动触发Offload:

bin/pulsar-admin topics offload --size-threshold 10K public/default/my-topic-for-offload

  1. 应用命令期待offload胜利:

bin/pulsar-admin topics offload-status public/default/my-topic-for-offload

  1. 验证在第一个Segment曾经被搬移到S3中:

在s3的终端能够看到ledger-31曾经被存储。

应用命令行,同样能够看到这个Topic中有两个Segment,第一个Segment -- ledger-31的offloaded状态为true。

以上的步骤就是咱们应用S3作为二级存储的整个过程。

如果想要理解更多的分级存储的内容,欢送参考Pulsar的官网:

http://pulsar.apache.org/docs...

http://pulsar.apache.org/docs...