Kafka和RocketMQ的一点对比总结

1. 介绍

Kafka和RcoketMQ是市面上比较主流的分布式消息队列。本文对他们做一番对比。如果对MQ还不是很熟悉的,可以先看看他们的文档,再来看本文。

2. MQ系统的关键问题——如何处理消息有序、消息重复

2.1 消息有序

Kafka和RocketMQ都不支持严格的消息有序。他们都仅仅保证在一个topic分区(队列)中是有序的。当然如果只使用一个分区或者队列来提供消费,性能肯定是比较差的了。

十分钟入门RocketMQ里面说RocketMQ支持严格消息有序。我觉得可能是指的生产者把消息发往一个队列中。 如果是这样的话,不能算是MQ的严格有序,因为牺牲了太多性能。......

canal设计上的一些小分析

1. 介绍

canal是阿里开源的一个binlog解析工具。本文对其设计上的一些小细节进行一番琢磨。

如果还不熟悉canal可以看看canal官方wiki和我写的canal源码解析系列。然后再看我现在这篇文章,可能会有更多的共鸣。

2. binlog解析原理的小思考

按照wiki所说,从上层来看,复制分成三步:

master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);

slave将master的binary log events拷贝到它的......

谈谈kafka的exactly once

1. 介绍

今天在复习kafka的一些知识。然后又对消息分发的语义进行了一番思考,还与小伙伴好好讨论了一番。这里小做总结。

2. mq如何做exactly once

要满足exactly once需要同时满足:

发送消息阶段,不允许发送重复的消息。

消费消息阶段,不允许消费重复的消息。

这个是文章十分钟入门RocketMQ里面写到的。

2.1 发送者如何保证不发送重复消息

在mq系统中,不采用重发策略(前提网络是完美的。。否则会丢消息,不符合整个系统是exactly once)

业务本身确保不发送重复的消息

2.2 消费者如何保证不重复消费

......

kafka压力测试

1. 介绍

最近kafka集群要换机房了。为了确保新环境正常,我们来做一些压力测试。这次压力测试重点会关注一些异常情况下,kafka收发消息的状况。

2. 基本信息

3台broker,使用kafka0.10.1版本,每台broker使用6T硬盘,内存100G。broker配置按照官方文档推荐的生产配置来配置。

3. broker挂掉的情况

3.1 整个broker集群挂掉

这个同事做过测试,所以这里直接放结论了:

即使设置了acks=all,但是如果整个集群都连接不上了,也是不能避免消息丢失的(重发次数到了设定的值,或者发送请求超时了都会导致生产者丢弃该条消息,发送......

netty4中的InboundHandler和OutboundHandler的执行顺序

1. 介绍

netty4的基本原理这里不再赘述。感兴趣的可以从CSDN下载netty in action的内容学习一下基础原理。

本节主要讨论InboundHandler和OutboundHandler的理解。

2. 术语回顾

2.1 基本术语

Channel和ChannelPipeline: 一个Channel对应一个ChannelPipeline。Channel代表一个传输通道,ChannelPipeline是ChannelHandler的容器

ChannelHandler: 用于对数据进行处理,其子类细分为ChannelInboundHandler和Chann......