互联网|「微服务架构」Kafka和Moskitto那个更适合微服务之间的通信?


近年来 , 微服务架构越来越流行 。 Docker和Kubernetes等编排工具使创建和维护此类应用程序变得非常简单 。 可以说 , 这些工具甚至正在推动微服务架构 。

互联网|「微服务架构」Kafka和Moskitto那个更适合微服务之间的通信?
本文插图
微服务之间的通信 不幸的是 , 这样的架构 , 除了许多优点之外 , 也有一些挑战!其中之一就是在微服务之间找到一种良好的通信方式 。
如果您遇到这样的问题 , 您肯定听说过三种解决方案:REST API、MQTT或Kafka 。 信不信由你 , 但REST API在这个用例中是不可能的 。 所以我们只剩下两个解决方案:MQTT和Kafka 。
两者都是消息传递代理 , 它们有不同的协议和服务于不同的目的 , 所以让我们来比较一下这两者 。
完美的消息传递代理 让我们从对微服务来说最重要的事情开始 。
微服务应该有持久的数据存储 。 他们应该能够接受大量的流量和大量的数据集 。 此外 , 它们还应该能够将流量分成独立的逻辑部分 , 例如 , 主题 。 最后 , 微服务应该具有非常高的可靠性和事件交付能力 。
考虑到这些要求 , 让我们来比较一下Kafka和莫斯基托
Kafka: Kafka最初是由LinkedIn员工在2011年创建的 , 当时考虑到了他们的信息系统 。 它后来在Apache许可证上发布 。 Kafka持久化事件 , 这意味着消息在收到时立即写入文件系统 。
【互联网|「微服务架构」Kafka和Moskitto那个更适合微服务之间的通信?】它能够扩展服务而不必担心事件的重复处理 。 Kafka通过添加更多的分区来扩展 , 这样来自每个分区的消息可以并行处理 , 从而使该工具更容易和高度可伸缩 。 这是因为 , 从一开始 , 它就是为大系统开发的 。 它的规模比其他类似的“有状态”消息代理更好 。
Kafka可以轻松处理高速数据摄取 。 除此之外 , 这些库是用最流行的语言编写的 。 它有一些非常有趣的框架 , 看看这个基于Ruby的框架-Karafka 。
不幸的是 , Kafka要想正常工作就得靠Zookeeper 了 。
Mosquitto: 让我们看看mosquito , 另一个用于微服务间通信的工具 。
Mosquitto 是最流行的解决方案之一 。 它是为物联网项目创建的轻量级协议 。 它基于发布/订阅模型 。 消息代理独立于其他应用程序或库 。
Mosquitto是在EPL/END下授权的 , 这意味着它是开源的 , 也是Eclipse基金会的一部分 , 这对许多项目来说是一个重要因素 。 Mosquitto有多种语言的多个库 , 所以可以肯定地说 , 它是非常通用的 , 这意味着开发人员可以很容易地根据项目进行调整 。
回答: Kafka更适合微服务 。 它具有持久性存储 , 因此可以从一开始就重放来自特定主题的事件 , 从而引入事件源模式 。

互联网|「微服务架构」Kafka和Moskitto那个更适合微服务之间的通信?
本文插图