共计 2222 个字符,预计需要花费 6 分钟才能阅读完成。
以下文章来源于 AI 火线,作者 AI 火线小组 译
本文由微信公众号「AI 火线」原创(ID:ai-front),未经受权不得转载。
作者 | Chris Bartholomew
译者 | 无明
编辑 | Natalie
AI 火线导读: 对于云原生分布式应用程序的开发人员来说,为把更多精力放在应用程序和微服务开发上,而不是浪费时间解决简单的音讯基础架构,他们须要一个解决方案帮忙治理好这些基础架构。
构建音讯基础架构的第一步是抉择适合的消息中间件技术。可选计划有很多,从各种开源框架(如 RabbitMQ、ActiveMQ、NATS)到一些商用产品(如 IBM MQ 或者 RedHat AMQ),除此之外,咱们还有 Kafka。不过,咱们最初没有应用 Kafka,而是抉择了 Pulsar。
为什么最终抉择了 Pulsar?上面列出了抉择 Pulsar 而不是 Kafka 的 7 大理由。
1. 流式解决和队列的合体
Pulsar 就像一个合二为一的产品,不仅能够像 Kafka 那样解决高速率的实时场景,还反对规范的音讯队列模式,比方多消费者、生效备援订阅和音讯扇出等等。Pulsar 会主动跟踪客户端的读取地位,并把这些信息保留在高性能的分布式 ledger(BookKeeper)当中。
与 Kafka 不同,Pulsar 具备传统音讯队列(如 RabbitMQ)的性能,因而,只须要运行一个 Pulsar 零碎就能够同时解决实时流和音讯队列。
2. 反对分区,但不是必须的
如果你用过 Kafka,就肯定晓得分区是怎么回事。Kafka 中的所有主题都是分区的,这样能够减少吞吐量。通过分区进而划分到不同的 broker,单个主题的解决速率能够失去大幅晋升。但如果某些主题不须要太高的解决速率,又该怎么办呢?对于这类状况,如果能不思考分区,防止随之而来的 API 和管理工作,不是更好吗?
Pulsar 就能够做到。如果只须要一个主题,能够应用一个主题而无需应用分区。如果须要放弃多个消费者实例的解决速率,也不须要应用分区,Pulsar 的共享订阅能够达到这一目标。
如果的确须要分区来进一步晋升性能,Pulsar 也能够反对分区的应用。
3. 日志诚然不错,但 ledger 更胜一筹
Kafka 开发团队预感了日志对于一个实时数据交换零碎的重要性。日志通过追加的形式写入零碎,写入速度很快。日志中的数据是串行的,能够依照写入的程序疾速读取数据。相比随机读取和写入,串行读取和写入速度更快。对于任何一个提供数据保障的零碎来说,长久化存储方面的交互都是一个瓶颈,而日志形象最大限度地晋升了这方面的效率。
日志诚然好,但当数据量过大时,也会给咱们带来一些麻烦,单台服务器上保留所有日志曾经成为一个挑战。在日志占满服务器存储之后该怎么办?如何进行扩容?或者保留日志的服务器宕机,须要从新从正本创立新的服务器时,该怎么办?将日志从一台服务器拷贝到另一台服务器耗时很长,特地是想要同时放弃零碎实时数据时,实现这个操作就更难了。
Pulsar 对日志进行分段,从而防止了拷贝大块的日志。通过 BookKeeper,Pulsar 将日志分段扩散到多台不同的服务器上。也就是说,日志不会保留在单台服务器上,任何一台服务器都不会成为整个零碎的瓶颈。这使故障解决和扩容更加简略,只须要退出新的服务器,而无需进行再平衡解决。
4. 无状态
对于云原生应用程序开发人员来说,最喜爱的货色就是无状态。无状态组件启动速度快、可替换,还能够实现无缝扩容。如果消息中间件也是无状态的,那岂不是更好?
Kafka 不是无状态的,每个 broker 都蕴含了分区的所有日志,如果一个 broker 宕机,不是所有 broker 都能够接替它的工作。如果工作负载太高,也不能随便增加新的 broker 来分担,而是必须与持有其分区正本的 broker 进行状态同步。
在 Pulsar 架构中,broker 是无状态的。然而齐全无状态的零碎无奈长久化音讯,所以 Pulsar 不是依附 broker 来实现音讯长久化的。在 Pulsar 架构中,数据的散发和保留是互相独立的。broker 从生产者接收数据,而后将数据发送给消费者,但数据保留在 BookKeeper 中。
Pulsar 的 broker 是无状态的,所以如果工作负载很高,能够间接增加新的 broker,疾速接管工作负载。
5. 简略的跨域复制
跨域复制是 Pulsar 的拿手好戏。Pulsar 在设计之初就思考到了这个个性,配置也很容易。无论是全局分布式应用程序还是灾备计划,都能够通过 Pulsar 搞定。
6. 稳固的体现
基准测试(http://openmessaging.cloud/do…)表明,Pulsar 能够在提供较高吞吐量的同时放弃较低的提早。
7. 齐全开源
Pulsar 提供了很多与 Kafka 类似的个性,比方跨域复制、流式音讯解决(Pulsar Functions)、连接器(Pulsar IO)、基于 SQL 的主题查问(Pulsar SQL)、schema registry,还有一些 Kafka 没有的个性,比方分层存储和多租户。更赞的是,这些性能个性都是开源的。
结 论
以上,咱们有很多理由抉择 Pulsar 来构建音讯基础架构服务。除了上述起因之外,Pulsar 的其余个性也带来了很多便当,比方多租户、命名空间、认证和受权、文档、对 Kubernetes 的敌对反对等等。
英文原文:
https://kafkaesque.io/7-reaso…
更多对于 Apache Pulsar 的动静和干货分享,请关注 ApachePulsar 公众号!