VB_*_*VB_ 2 messaging hazelcast apache-kafka microservices
免责声明.我有使用Hazelcast和Vert.x的经验.我是Apache Kafka的新手.对不起,如果我的问题看起来有先入为主,那就不是了.
有两种广泛的方式来安排微服务之间的通信:REST和消息传递.在我所在的地区,当有人说他们正在使用消息传递微服务之间的通信时 - 事实上它意味着Apache Kafka.
你能否帮我找到一个线索,为什么Apache Kafka比Hazelcast的Topic更适合微服务之间的通信需求?好点吗?由于哪些保证,功能或架构决策?
Hazelcast的集群范围消息传递示例如下:
// node #1
Hazelcast.newHazelcastInstance()
.getTopic("topic")
.publish(new Date());
// node #2
Hazelcast.newHazelcastInstance()
.getTopic("topic");
.addMessageListener(message -> /*Do something here*/);
Run Code Online (Sandbox Code Playgroud)
还有一些Vertmel(非常讨厌的演员框架)写在Hazelcast的主题和成员发现之上.
Kafka的消息是否更适合微服务之间的通信?
小智 10
这是一个普遍的问题,我不是卡夫卡专家; 但我会尝试讲述Hazelcast的消息功能.
Hazelcast包含两种主题; 一个是常规的ITopic,另一个是Reliable Topic,它再次实现ITopic接口.用法大致相同,但它们保证的不同.Regular ITopic是基于Hazelcast的事件机制,并不保证消息传递.可靠的主题由备份Ringbuffer,并且事件不会丢失,因为Ringbuffer默认配置了一个同步备份.此外,每个Reliable ITopic都有自己的Ringbuffer; 如果一个主题有一个非常快的制作人,它不会导致以较慢的速度运行的主题出现问题.最后,由于常规后面的事件系统ITopic与其他数据结构(例如集合侦听器)共享,因此可能会遇到隔离问题.Reliable不会发生这种情况ITopic.但是由于所有这些缺点,常规ITopic可以运行得更快,因为它使用fire&forget eventing机制.
Apache Kafka有其巨大的优势; 例如它全部构建为具有临时持久性日志的消息流平台,因此能够将数据存储到磁盘以实现容错.
总之,如果您需要消息持久性以及应用程序上消息传递所需的所有功能,请使用Kafka,因为它更专业.但是,如果您需要包含对消息传递支持的内存数据平台,请使用Hazelcast.
| 归档时间: |
|
| 查看次数: |
1676 次 |
| 最近记录: |