Ably Kafka连接器有很多新的增强功能,现在可以在一个完整的通用版本(GA)中使用。开发人员现在可以选择使用基于模式的映射规则,以实现从许多Kafka主题到许多Ably通道的数据流 - 是聊天解决方案、实时体育更新、直播流、广播通知和警报的理想选择。这项新功能提供了更大的灵活性,同时进一步简化了通过公共互联网向最终用户扩展基于Kafka的管道的管理。

将Kafka主题细化为多个Ably通道
如何在公共互联网上向用户扩展Kafka管道
在事件流领域,Kafka已经成为许多组织的第一选择。它能够处理大量关键的、时间敏感的事件数据,但Kafka并不是为在内部系统和公共互联网上的消费者之间分发事件而设计的。这是一个关键的区别:就用户而言,丰富、实时的数字体验是必须的。如何利用Kafka的力量,使其 "为互联网做好准备"?
对于许多工程团队来说,建立和维护一个面向互联网的公共消息层所需的努力,能够流式传输实时事件数据,会占用他们核心工程的时间和注意力。
Ably通过一个容错的、动态弹性的全球边缘网络,以低延迟向数百万并发连接的设备提供数据。没有复杂的基础设施需要配置、管理或扩展。我们在性能、数据完整性、安全性和可靠性方面提供保证和性能服务协议。
我们的许多客户,从Hubspot和Experity到Split和Genius Sports,都使用Ably作为Kafka的面向互联网的扩展。我们是帮助他们跨越网络边界向消费者实时发送任务关键型事件数据的解决方案。
将您的Kafka部署与Ably结合起来
Ably和Kafka是互补的服务。Kafka是一个内部事件流平台。Ably是一个边缘消息传递服务。Ably不仅与Kafka有相同的保证、消息传递语义和特性,而且为公共互联网上的事件流增强和扩展了这些。
Kafka在主题数量较少,生产者和消费者数量有限且可预测的情况下效果最好。可以把它看作是一个旨在处理大量数据的 "大胖管"。
相反,Ably可以快速地横向扩展到无限数量的通道和数百万的并发用户,不需要手动配置容量。把它想象成数百万条细管。

Ably Kafka连接器
Ably Kafka连接器是一个水槽连接器,允许你从Kafka主题发布消息到Ably通道。Ably执行繁重的工作,将数据平移到订阅者。
Kafka连接器支持两种映射选项--静态和基于模式。静态映射可以将一个或多个Kafka主题连接到一个Ably通道。在这里,你提供一个配置的字符串(例如,通道名称)。无论连接器消费的是什么记录,这都是一样的。例如,如果你设置一个channel="global",所有的Kafka记录都将通过该通道发布。例如,如果你是一个体育网站,在一个频道上向数百万的订阅者广播更新,这很好。
channel = basketball
message.name = news_update
然而,如果你的用例需要许多主题来连接并将数据流转到许多通道,这就有局限性了。再以体育广播为例。这里的解决方案是在同一个频道上向多个用户流传一个数据。但是,如果你有一个多租户的聊天解决方案,例如,为多个客户和多个用户提供服务,你通常需要向这些用户传输大量 "特定用户 "的数据。这是跨多个渠道的。这是一个更复杂的配置模式。
为了应对这一挑战,Ably Kafka连接器的全面、通用版本可以实现基于模式的映射,将Kafka主题直接映射到任意数量的Ably通道。
什么是基于模式的映射?
基于模式的映射使你能够按照设定的规则将许多Kafka主题映射到许多Ably通道。例如,它是一个聊天应用程序的理想选择,其中某些数据需要发送给特定的用户。想想看,一个Kafka主题代表了一个特定的客户公司--就像一个大的字母箱。所有员工的不同聊天信息都会被处理,然后Ably Kafka连接器将Ably作为邮递员,将信息传递给正确的收件人。基于模式的映射使得每条消息(Kafka记录)都能被询问以确定收件人,并确定通过哪个渠道发送。

将Kafka主题细化为多个Ably通道
本质上,基于模式的映射为客户提供了通过插值记录键和记录主题值来调整其配置的能力。例如,当通道名称被配置为channel="channel_#{topic}"时,消息将根据主题名称被发布到一个通道。请注意,目前有两种支持基于模式的映射的配置:channel和message.name。
channel = channel_#{topic}
message.name = message_#{key}
对于一个 "事件 "主题,频道将翻译为 "channel_events"。对于一个 "移除 "主题,message.name将被配置为message_remove。
需要注意的是,除了基于模式的映射,你还可以使用静态映射。例如,你可以把频道定义为#{topic}channel,但message.name定义为singlemessage 。在这种情况下,通道将被基于模式的映射,而消息名称将被静态映射。
channel = channel_#{topic}
Message.name = add
在这种情况下,虽然消息将根据它们的主题通过渠道,但对于所有通过不同渠道的消息,message.name将是相同的。
运行中的Ably Kafka连接器
我们已经创建了一些演示和 "如何 "指南,不仅向你展示连接器是如何工作的,还展示了Ably提供的使用案例和额外优势。请玩一玩,并告诉我们您的想法:
- 使用Kafka、FastAPI和Ably建立一个实时票务预订解决方案
- 使用Kafka和Ably建立一个可靠的实时银行解决方案
- 如何用Kafka和Ably建立一个实时聊天解决方案
- 如何用Confluent和Ably构建一个实时的博彩解决方案
如何开始使用Kafka和Ably连接器
我们创建了一个循序渐进的教程,介绍了使用Kafka、Ably和Ably连接器所需要做的所有事情和知识。
或者,现在就注册一个免费的开发者账户吧