赞
踩
RocketMQ消息模型:
Kafka:RocketMQ中的队列(queue)对应Kafka中的分区(Partition),其他两者的消息模型一致
Kafka:抛出异常,重试
RocketMQ:通过接口反查事务状态
生产阶段:消息从producer端生产出来发送到broker端。采用请求确认机制,正确处理返回值或捕获异常
存储阶段:消息在broker端存储。数据写入磁盘成功再相应,如果是集群的话,节点刷盘成功数过半通过
消费阶段:消息从broker端到consumer端。采用请求确认机制,业务逻辑完成后再发送消费确认
1、利用数据库的唯一索引
2、给更新的数据设置前置条件
3、记录并检查
1、发送变快:
增加消费端的实例,系统降级关闭一些不重要的业务
2、消费变慢:
排查变慢原因,消费失败导致一条消息反复消费的情况变多,消费线程是不是阻塞住了
主题层面是没法保证消息有序性的,只有在分区(队列)上才能保证有序性
如果是全局有序性,可以配置成一个队列一个生产者一个消费者
如果是局部有序性,可以取一个key,用一致性哈希算法计算出队列编号,保证相同的key发送到同一个队列上
通过NIO,多路复用实现高吞吐
将结构化数据转换成字节流的过程就称为序列化,反过来转换称为反序列化
选择序列化需要衡量的几个因素:
序列化后的数据最后是易于阅读的
实现的复杂度是否足够低
序列化和反序列化的速度越快越好
序列化后的信息密度越大越好,也就是序列化后占用的存储空间越小越好
JSON -- Kryo -- 专用的序列化
1、producer发送消息的时候,kafka不会马上将消息发送出去,而是会在内存缓存起来,等合适的时机再将缓存中的消息组成一批发送给broker,
在写入磁盘、读取消息、集群复制到副本这些操作中不会将“批消息”解开,而是作为一条“批消息”进行处理的。
2、顺序读写
3、PageCache 加速消息读写
4、ZeroCopy 零拷贝
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。