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