sharetwitterlinkedIn

Apache Pulsar 如何帮助涂鸦智能简化消息系统并降低运维成本

head img

涂鸦智能已经超越了现有的基于 Kafka 的消息系统。 用户、主题和消息数量的快速增长导致与存储、处理、人工和时间相关的成本不断增加。

为了提高系统性能,涂鸦需要更灵活的消息传递系统来满足他们的持久化需求。 他们还需要一种能够轻松按用户对消息进行分类的解决方案。

在评估了几个不同的选项后,涂鸦最终选择了 Apache Pulsar,因为事实证明它最擅长处理消息的积累和重复消费。 Pulsar 的加入让涂鸦的消息系统更加高效,从而降低了运营和维护成本。

涂鸦智能简介

涂鸦智能是一个全球化的智能平台; “AI+IoT”开发者平台; 以及,全球领先的语音AI交互平台。 涂鸦智能连接消费者、生产品牌、OEM、零售连锁的需求,为客户提供一站式的人工智能物联网解决方案。

涂鸦提供硬件介入、云服务、应用软件开发,形成人工智能+制造服务的封闭生态。 这个封闭的生态系统为消费者提供物联网智能设备的业务端技术和商业模式升级服务,从而满足客户对硬件产品的更高需求。

图 1 显示了涂鸦目前的生态模型,包括涂鸦云、涂鸦 OS 和涂鸦 APP,它们共同形成了一个封闭的生态循环。 右边的 IoT 生态系统展示了涂鸦的一些应用场景,例如智能酒店、智能安防、智能家居等。

Figure 1. The Current Ecological Model of Tuya Smart

涂鸦智能在 Pulsar 之前的消息架构

图 2 展示了涂鸦智能在添加 Pulsar 之前的消息架构。 上层包括一套独立于物联网的设备,如电源开关、投影仪等。 来自这些设备的消息通过 MQTT 网关被报告给消息系统。 此外,其他物联网设备(例如传感器)在将消息报告给消息系统之前通过 MQTT 网关传输消息。

Figure 2. Tuya Smart's Message Architecture Before the Addition of Pulsar

图 3 展示了涂鸦之前消息系统中的每个链接。 消息分发从 MQTT 网关开始。 然后,在获得中间服务的访问权限后,将消息连接到 Kafka,通过 Kafka 分发消息。 用户在收到消息后能够以不同的方式处理消息。

Figure 3. The Links in Tuya's Previous Message System

挑战

涂鸦之前的架构模式给公司带来了以下痛点:

  1. 最突出的问题是HTTP的传递方式不灵活。 如果用户想在服务重启后再次消费消息,则需要额外的处理来满足消息持久化的需求。 具体来说,用户没有收到的任何消息都需要保存在数据库中。

    涂鸦现有的 Kafka 订阅模式可以解决持久化问题; 但是,该公司还面临其他架构挑战,需要采用不同的解决方案。

  2. 在Kafka的交付模式中,每个用户都与一个唯一的主题相关联。 因此,主题的数量随着用户数量的增加而增加。 由于用户数量、主题数量和消息数量急剧增加,运维成本随着时间的推移变得越来越高,压力越来越大。 人工和时间成本也逐渐上升。
  3. 由于消息是按类别分类的,租户之间正在相互交互。 租户之间的相互关系受到通过 Kafka 进行消息分发的极大影响。

Why Apache Pulsar

Tuya 最终选择了 Pulsar,主要有两个原因。 首先,Pulsar 具有独特的功能,例如多租户,这为公司提供了独特的优势。 其次,Pulsar 在测试期间的表现优于其竞争对手。 在本节中,我们将检查哪些 Pulsar 功能对涂鸦最有吸引力,并回顾性能测试的结果。

Pulsar’s Advantages

以下特性在涂鸦决定采用 Pulsar 的过程中发挥了关键作用:

  • 丰富的交付/订阅策略

    Pulsar 统一了队列模型和流模型。 数据的副本不需要存储在主题级别,因为一条数据可以被多次消费。 通过在流式传输、排队等中计算不同的订阅模型,可以显着提高灵活性。

  • 易于运维(与 Kafka 相比); 倾向于自动化

    Apache Pulsar 是一个灵活的发布-订阅消息系统,具有多层和分段的架构。 它的主要优势在于地理复制。 借助 Pulsar 将计算与存储分离的云原生架构,数据从代理转移到共享存储中。 上层是复制消息分发和服务的无状态代理。 下层是称为 bookie 集群的持久存储层。

    凭借其分段存储架构,Pulsar 允许数据独立扩展并快速恢复,而不受扩展的限制。

  • 多租户隔离

    多租户是单个软件实例为多个租户提供服务的能力。 租户是一组用户,它们共享对软件实例具有特定权限的公共访问权限。 租户和命名空间是支持多租户的两个核心 Pulsar 资源,如下所示:

    • 在租户层面,Pulsar 为特定租户预留了适当的存储空间、应用授权和认证机制。
    • 在命名空间层面,Pulsar 有一系列的配置策略,包括存储配额、流量控制、消息过期策略、命名空间之间的隔离策略等。

    消息可以按类别或租户(用户)分类。 当涂鸦开始按租户而不是类别对消息进行分类时,租户之间的交互就自动解决了。

    虽然 Pulsar 不是唯一可以解决这个问题的平台,但是在 Kafka 中很难达到预期的结果,因为 Kafka 是一个单租户系统。 Pulsar 的多租户特性更好地服务于涂鸦的真实场景。

  • 优秀的在线社区

    Pulsar 社区非常活跃,对技术和文档问题都反应迅速。

Pulsar Performed Better Than Its Competitors

涂鸦确实从性能、扩展、运维等角度比较了多个消息队列,尽职尽责。 表 1 显示了他们的研究结果的摘要。

表 1. 性能比较:Pulsar 与其竞争对手

                   Item                              LeviMQ                     Kafka                      NSQ                     Pulsar           
稳定性 High High High
扩展 Medium Medium High
O&M Low High High
生态 High Medium High
性能 High High High

LeviMQ 是涂鸦开发的基于 MQTT 协议的消息队列。\ NSQ 是 Go 中流行的开源消息中间件产品

首先,Kafka 在扩展方面存在不足,尤其是在缩减方面。 其次,从运维的角度来看,Kafka如前所述,在人工和时间方面成本更高。 最后,在生态方面,LeviMQ 是涂鸦开发的,但不是开源的解决方案。 因此,LeviMQ 在一定程度上具有内在的生态局限性。 NSQ 也是一个优秀的消息队列——开源,基于 Kafka 的优势进行了更改。 但是,Pulsar 的文档更完整。

在比较了消息队列性能的各个方面后,分析了各个平台的优缺点。 结果如图 4 所示。

图 4. LeviMQ、NSQ、Pulsar 和 Kafka 的优缺点

如图 4 所示,Pulsar 更擅长扩展和应用场景。 它也比 Kafka 更灵活。

而且,尽管 Pulsar 的文档不如 Kafka 完整,但 Pulsar 社区一直在努力填补空白,并且取得了良好的进展。

结论

随着 Apache Pulsar 的加入,涂鸦的消息系统架构发生了变化,如图 5 所示。

图 5 加入 Apache Pulsa 后涂鸦新消息系统架构

架构中最显着的变化如下:

  • 在 Kafka 和消息分发之间添加了一个 Pulsar 层。 这种新架构最明显的改进是租户隔离的解决。 Tuya 现在在部署 Pulsar 时为每个用户创建一个新租户。
  • 涂鸦用户订阅消息的软件开发包(SDK)现已支持 Pulsar。

Pulsar 的当前和未来计划

涂鸦成功将 Apache Pulsar 应用到各个应用层,系统整体表现良好。 他们对结果非常满意,现在正在努力实施他们的短期和长期计划。

目前,该公司正在为 Pulsar 应用一套规则引擎,以满足日益增长的消息订阅需求。

未来,涂鸦期待更多扩展的业务支持功能,提供更丰富的使用场景。 具体来说,

  • 在技术层面,涂鸦等待更多运维(运维)API,例如查看特定主题关联的broker和bookie的能力。
  • 关于文档,涂鸦希望看到更多官方的 Pulsar 设计文档,以帮助他们理解。

结论

随着 5G 的到来,物联网行业面临着无数的挑战和机遇。 作为一个全球化的智能平台,涂鸦智能不仅链接各个销售平台的厂商,还以无数种方式连接用户。 在“万物智能”的主题驱动下,涂鸦迫切需要一个高性能、高稳定性的消息系统。

在对比了 Kafka、LeviMQ 等多种不同的消息系统后,涂鸦最终选择了 Apache Pulsar。 Pulsar 凭借其卓越的性能和异地复制、多租户隔离等特性,解决了涂鸦以往消息系统中的许多痛点,如交付不灵活、主题数量快速增长导致运营成本增加、租户之间的交互 , 等等。 该实施证明 Apache Pulsar 作为物联网行业的应用程序具有广阔的前景。

You can download the hard copy of the success story today.

© 北京原流科技有限公司Apache、Apache Pulsar、Apache BookKeeper、Apache Flink 及相关开源项目名称均为 Apache 软件基金会商标。条款隐私