zoukankan      html  css  js  c++  java
  • Kafka和RocketMQ的使用体验

     Kafka

    Kafka早在5年前就已经非常流行。4年前用Kafka做日志缓存,数据平台接入缓冲,经过Kafka的数据量有100TB级别。

    Kafka本身非常强壮,前提是:
    1、topic不多,最好一个topic;
    2、分区多个没关系,但是分区副本不多,最好只有一个;
    3、zookeeper只有一个节点

    这样的前提下,Kafaka能支持高并发的消息数据接入。

    如果副本较多就会不断的同步数据文件,性能急剧下降;
    如果zk多个节点,元数据信息在zk节点中,数据量大的时候,zk不能稳定,导致节点不一致的问题。一旦不一致,kafka集群就会出现数据紊乱,数据丢失的问题。
    topic比较多,topic信息也是zk来管理和更新,瓶颈还是在zk上。

    阿里巴巴多年前有个叫dubbo的服务在业内出名,但是为什么用着用着内部也不用dubbo呢,因为dubbo必须依赖zookeeper,dubbo官方文档干脆说内部dubbo使用自研的注册组件,zk是个小公司生产用还行的组件,有严重性能瓶颈。


    RocketMQ

    RocketMQ是阿里巴巴模仿了Kafka的设计和特性,使用Java语言进行改良的消息中间件
    主要改良:
    1、注册中心不使用zk,而是重写了一个叫nameserver的模块,专门负责消息路由,消息管理,注册和消费
    2、取消Kafka的分区机制,在RocketMQ里面对应Tag和消息队列机制,也就是说一个topic和Tag组合对应kafka的一个分区,这个组合或者分区里的消息是有序的。
    3、RocketMQ完全支持顺序消费,支持事务消息功能,Kafaka要顺序消费也可以,使用一个分区就可以。

    不足:
    1、nameserver依然是单点,如果nameserver master挂掉需要重新选举,依然会有短暂的消息丢失。这一点和kafka用到zk的情形一样。
    2、rocketMQ虽然是apache顶级项目,在IT圈里面使用的人并不多,技术生态比Kafka差远了。代码bug比Kafka多,有问题也难查。

    其他方面的功能RocketMQ和Kakfa都基本相同。


    RocketMQ基本用法参考:
    https://www.cnblogs.com/520playboy/p/6750023.html

  • 相关阅读:
    Tomcat 配置支持APR
    javascript 字符串去空格
    cordova 跨平台APP版本升级
    cordova-ios 升级到4.4.0 无法真机跑iOS8 报错: dyld`dyld_fatal_error: -> 0x120085088 <+0>: brk #0x3
    iOS 项目架构tabbarController 嵌套 navbarController
    iOS + Node + MySQL
    angularjs中的单选框绑定数据注意事项
    angular2新建的项目上传github
    ionic 下拉选择框中默认显示传入的参数
    JavaScript学习笔记
  • 原文地址:https://www.cnblogs.com/geektcp/p/12956176.html
Copyright © 2011-2022 走看看