基于Kafka的六种事件驱动的微服务架构模式

来源:岁月联盟 编辑:猪蛋儿 时间:2022-10-07

出处:https://www.jdon.com/62027

在过去的一年里,我一直是负责Wix的事件驱动消息基础设施(基于Kafka之上)的数据流团队的一员。该基础设施被 1400 多个微服务使用。

在此期间,我已经实现或目睹了事件驱动消息传递设计的几个关键模式的实现,这些模式有助于创建一个健壮的分布式系统,可以轻松处理不断增长的流量和存储需求。

一、消费与投射
…那些非常受欢迎的服务会成为瓶颈

当您遇到存储大型领域对象的“流行”数据的瓶颈时,此模式可以提供帮助。
在 Wix,我们的MetaSite服务就是这种情况,它为 Wix 用户创建的每个站点保存了大量元数据,例如站点版本、站点所有者以及站点上安装了哪些应用程序-已安装的应用程序上下文。

此信息对于 Wix 的许多其他微服务(团队)很有价值,例如Wix Stores、Wix Bookings、Wix Restaurants等等。这个单一的服务被超过 100 万 RPM 的请求轰炸,以获取网站元数据的各个部分。

通过查看服务的各种 API 可以明显看出,它正在处理其客户端服务的太多不同的问题。



MetaSite 服务处理约 1M RPM 的各种请求

我们想要回答的问题是,我们如何以最终一致的方式从该服务转移读取请求?
使用 Kafka 创建“物化视图”负责这项服务的团队决定创建一项附加服务,该服务仅处理 MetaSite 的一个问题