本文会首先介绍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作为