微服务间的交流:apachekafka与hazelcast的主题

juzqafwq  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(468)

免责声明。我对hazelcast和vert.x有经验。我是Apache·Kafka的新手。抱歉,如果我的问题看起来是先入为主的,那不是。
有两种广泛的方式来安排微服务之间的通信:rest和消息传递。在我所在的地区,当有人说他们在微服务之间使用消息传递进行通信时,实际上意味着ApacheKafka。
我很想知道为什么apachekafka比hazelcast的主题更适合微服务之间的通信需求?好点了吗?因为哪些保证、特性或体系结构决策?
hazelcast的集群范围消息传递示例如下所示:

// node #1
Hazelcast.newHazelcastInstance()
         .getTopic("topic")
         .publish(new Date());

// node #2
Hazelcast.newHazelcastInstance()
         .getTopic("topic");
         .addMessageListener(message -> /*Do something here*/);

另外,在hazelcast的主题和成员发现之上还编写了vert.x(非常粗略地说是actors框架)。
Kafka消息传递更适合微服务之间的通信吗?

u7up0aaq

u7up0aaq1#

这是一个有点普通的问题,我不是KafkaMaven;但我会告诉你关于hazelcast的消息功能。
hazelcast包含两类主题;一个是普通的 ITopic 另一个是可靠的主题,再次实现 ITopic 接口。用法基本相同,但在保证的内容上有所不同。常规 ITopic 基于hazelcast的事件机制,不保证消息传递。可靠的主题由 Ringbuffer ,并且事件不会丢失,因为默认情况下ringbuffer配置了一个同步备份。而且,每个都是可靠的 ITopic 获取自己的环缓冲区;如果一个主题有一个非常快的生产者,它不会导致问题的主题运行速度较慢。最后,由于事件系统背后有一个规律 ITopic 如果与其他数据结构(例如,集合侦听器)共享,则可能会遇到隔离问题。这种情况不会发生在可靠的 ITopic . 但尽管有这些缺点 ITopic 因为它使用了fire&forget事件机制,所以可以运行得更快一些。
Apache·Kafka有自己的巨大优势;例如,它全部构建为一个具有临时持久性日志的消息流平台,因此具有将数据存储到磁盘以进行容错的能力。
总之,如果您需要消息持久性以及应用程序上消息传递所需的所有特性,那么可以使用kafka,因为它更专业。但是,如果您需要一个内存数据平台,包括对消息传递的支持,可以使用hazelcast。

相关问题