apache pulsar,pulsar


apache pulsar


apache 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









相关内容

    暂无相关文章