原文见:http://kafka.apache.org/documentation.html#semantics kafka在生产者和消费者之间的传输是如何保证的,我们可以知道有这么几种可能提供的delivery guarantee: At most once 消息可能会丢,但绝不会重复传输 At least one 消息绝不会丢,但可能会重复传输 Exactly once 每条消息肯定会被传输一次且仅传输一次,很多时候这是用户所想要的. 值得注意的是,当Producer向broker发送消息时…
本文来自网易云社区 作者:田宏增 Kafka的高可靠性的保障来源于其健壮的副本(replication)策略.通过调节其副本相关参数,可以使得Kafka在性能和可靠性之间运转的游刃有余.Kafka从0.8.x版本开始提供partition级别的复制,replication的数量可以在$KAFKA_HOME/config/server.properties中配置. Kafka中消息是以topic进行分类的,生产者通过topic向Kafka broker发送消息,消费者通过topic读取数据.然而t…
转自:http://blog.csdn.net/bailove/article/details/44240303 业务场景 来疯直播互动平台,每天有数百万人上下线,有数十万人同时参与互动直播聊天.用户的登陆.退出及用户间的各种交互行为如聊天.送礼.关注.投票.抢沙发等等事件都会产生大量的消息.这些消息具有瞬间爆发性,比如热门直播间刚开播,直播表演的高潮等等.而用户的礼物.星星.喇叭.沙发等这类消息是不允许丢失,必须100%送达.这就需要有一个高性能,高可靠,稳定可拓展的消息服务平台的支撑.它要求…
为保证 producer 发送的数据,能可靠的发送到指定的 topic,topic 的每个 partition 收到 producer 发送的数据后,都需要向 producer 发送 ack(acknowledgement 确认收到),如果 producer 收到 ack,就会进行下一轮的发送,否则重新发送数据. 1)副本数据同步策略 方案 优点 缺点 半数以上完成同步,就发 送 ack 延迟低 选举新的 leader 时,容忍 n 台 节点的故障,需要 2n+1 个副 本(N+1台同步完成)…
Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域. 1  快写  快读 看下面的图: 传统应用是  硬件到缓存,到应用 再socket进行传输,再进行网络传输,再到用户, 而kafka实现了零拷贝,但是其实也是拷贝一次,将数据拷贝到内存中,,同时也是将数据顺序存入磁盘,这个点我们可以体会到,例如传输数据的时候,如果很多小文件,那么拷贝的就特别慢,如果拷贝大文件就特别快,kafka就是利用到这一点做到了快写,然后零拷贝,进行了快读.  2  生产者消息的可靠性保证…
4.6 Message Delivery Semantics Now that we understand a little about how producers and consumers work, let's discuss the semantic guarantees Kafka provides between producer and consumer. Clearly there are multiple possible message delivery guarantees…
1.消费端弄丢了数据 唯一可能导致消费者弄丢数据的情况,就是说,你消费到了这个消息,然后消费者那边自动提交了 offset,让 Kafka 以为你已经消费好了这个消息,但其实你才刚准备处理这个消息,你还没处理,你自己就挂了,此时这条消息就丢咯. 这不是跟 RabbitMQ 差不多吗,大家都知道 Kafka 会自动提交 offset,那么只要关闭自动提交 offset,在处理完之后自己手动提交 offset,就可以保证数据不会丢.但是此时确实还是可能会有重复消费,比如你刚处理完,还没提交 offs…
1.JAVAEE 是一套使用Java 进行企业级开发的13 个核心规范工业标准 , 包括: JDBC  数据库连接 JNDI  Java的命名和目录接口 EJB   Enterprise java bean RMI   远程方法调用    一般使用TCP/IP 协议 Java IDL    接口定义语言 JSP Servlet XML  JMS    Java 消息服务 JTA JTS JavaMail JAF JMS部件:  5 个主要的消息头: 发送和接收的消息类型必须一致 消息属性:识别.…
一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失. 一 消息生产者没有把消息成功发送到MQ 1.1 事务机制 AMQP协议提供了事务机制,在投递消息时开启事务支持,如果消息投递失败,则回滚事务. 自定义事务管理器 @Configuration public class RabbitTranscation { @Bean public RabbitTransactionManager rabbitTransactionManager(ConnectionF…
最近碰到了消息时间戳的问题,于是花了一些功夫研究了一下,特此记录一下.   Kafka消息的时间戳 在消息中增加了一个时间戳字段和时间戳类型.目前支持的时间戳类型有两种: CreateTime 和 LogAppendTime 前者表示producer创建这条消息的时间:后者表示broker接收到这条消息的时间(严格来说,是leader broker将这条消息写入到log的时间)   为什么要加入时间戳? 引入时间戳主要解决3个问题: 日志保存(log retention)策略:Kafka目前会定…