Apache Pulsar(由Yahoo开发)似乎是Apache Kafka的下一代。
Apache RocketMQ(由阿里巴巴提供)似乎是下一代Apache ActiveMQ。
两者都是开源的分布式消息传递和流数据平台。
但是他们如何比较?在功能和性能方面,我何时应该优先选择另一个?
Pulsar(如Kafka)严格在流传输方面是否更好,而RocketMQ(如ActiveMQ)在传输消息方面是否严格?
activemq-classic rabbitmq apache-kafka rocketmq apache-pulsar
我正在使用 Spring-boot 或 Spring-Cloud Framework 来开发 Web 应用程序。系统主要处理来自客户端的HTTP Restful请求,然后将其保存到MySQL数据库中。
但我计划让它更具可扩展性。它应该能够启动每个服务的更多实例,并使系统可以处理更多传入请求。
但我不确定我这样做是否正确,有谁能来帮我检查一下我目前的做法是否合理,或者提出我的做法是否存在潜在的风险。
我正在做的是:
服务A在其控制器中接收请求,然后将其异步写入RocketMQ。RocketMQ用于削峰。
然后服务B订阅服务A写入的RocketMQ主题,并将消息以列表的形式缓存到Redis中。
服务 C 启动一个守护线程检查 Redis 中的消息编号。如果缓存列表大小达到一定值,它将拉取所有消息并将它们保存到MySQL中,然后刷新Redis中的缓存。
我尝试给 rockerMQ 代理加注星标,但收到错误消息:
内存不足,Java 运行时环境无法继续运行。
本机内存分配 (mmap) 无法映射 8589934592 字节以提交保留内存。
包含更多信息的错误报告文件另存为:
/usr/local/soft/rocketMQ/incubator-rocketmq/distribution/target/apache-rocketmq/hs_err_pid6034.log
Java HotSpot(TM) 64 位服务器 VM 警告:信息:os::commit_memory(0x00000005c0000000, 8589934592, 0) 失败;错误='无法分配内存'(errno=12)
我从错误日志文件中得到了有关内存消息的信息:
内存:4k 页,物理 4089840k(551832k 可用),交换 2621432k(2621432k 可用) vm_info:用于 linux-amd64 JRE (1.8.0_144-b01) 的 Java HotSpot(TM) 64 位服务器 VM (25.144-b01),构建于2017 年 7 月 21 日 21:57:33 通过“java_re”与 gcc 4.3.0 20080428(红帽 4.3.0-8)
我怎样才能让rockerMQ代理为我工作