apache pulsar,pulsar
apache pulsar,pulsar
apache pulsarapache pulsar是yahoo贡献的一个分布式消费中间件,是一个面象企业级的中间件
特性
支持多租户,同时支持queue及streaming应用,支持多种不同的消费策略,不同的消息保留策略,消息的应答
多租户
有两个名词:property,namespace
property相当于租户,namespace包括多个topic,一个property有多个namespace
权限控制在namespace级别,通常给property赋于权限到namespace
消费策略
share 可以多个消费费者同时消费一个partition(相当于kafka)数据,轮循
failover 支持多个消费者,但是一个consumer down掉下一个consumer继续消费
exclusive 唯一一个consumer消费,不允许其他
保留策略
可以根据响应来保留消息,也可以指定保留时间,或者是ttl
消息应答
包括两种:ack individually/ack cumulatively
ack cumulatively相当于kafka offset commit只保留最后的
ack individually只要没有应答的消费就会重新处理,认为没有消费成功
其他
由于apache pulsar是将broker与数据分离的,数据的复制由bookeeper实现,这样的架构的好处是在于数据不需要于broker迁移,比如rebalance
配额,如果资源配额用到限制值可以选择不同的策略,阻塞,抛异常,删除旧数据
当broker数据过载,将会把流量重定向到负载轻的broker(引擎与数据分离的优点)
可以在producer与consumer端配置不同的数据量,保证集群稳定
当某些极端操作导致短时间内部分broker不稳定,可以暂时隔离该部分broker,稍后恢复,除了隔离broker,还可以为不同的存储配置策略
持久化保证数据不丢,依赖于bookeeper的复制与wal,数据真下落入wal才返回应答,这点与kafka不同(内存)
异地跨集群的复制
架构
客户端不依赖于zookeeper,不能直接连接bookeeper,提供kafka api兼容,方便从kafka 迁移代码到pulsar
数据保存在bookeeper中,每一个broker负责多个partition,broker是无状态的,当broker down时数据不会迁移
第一个partition是一个distribute log,该log拆分成多个segment分布在多个bookies上,segment可以按大小时间来形成新的
如果集群加入新的broker,pulsar会自动将新的segement写入该broker,并且pulsar可以做到机架,区域感知
如果某个segment失效,可以failover到其他的replica segment
有人做了kafka性能对比
https://www.businesswire.com/news/home/20180306005633/en/Apache-Pulsar-Outperforms-Apache-Kafka-2.5x-OpenMessaging
评论暂时关闭