kakfa学习教程一

一、概念

kafka是一种高吞吐量的分布式发布订阅消息系统 、kakfa是分布式集群 一个集群可能由一台或者多台机器组成

二、kakfa术语解释

  producer:生产者。
  consumer:消费者。
  topic: 消息以topic为类别记录,Kafka将消息种子(Feed)分门别类,每一类的消息称之为一个主题(Topic)。
  broker:以集群的方式运行,可以由一个或多个服务组成(kakfa服务器又称为 broker)。

  消费者可以订阅一个或多个主题topic),并从Broker拉数据,从而消费这些已发布的消息。
  每个消息(也叫作record记录)是由一个key,一个value和时间戳构成。
三、kakfa的目标
  1、吞吐量/延时操作  2、消息持久化  3、负载均衡和故障转移  4、伸缩性

  详细介绍
  吞吐量:吞吐量是某种处理能力的最大值,而对于kafka而言 它的吞吐量就是每秒能够处理的消息树或者每秒能够处理的字节数


  延迟:它衡量的是一段时间间隔 可能是发出某个操作与接收到操作响应之间的间隔 对于kafka而言 延时可以表示客户端发起请求与服务器处理请求并发送响应给客户端之间的这一段关系 显而易见 延时间隔越短越好在实际场景中 这两个指标通常是一对矛盾体

  消息持久化:就是把消息持久化到磁盘中

  故障转移:通常是通过心跳或者回话的机制实现的,即只要主服务器与备份服务器之间的心跳无法维持 或者主服务器注册到服务中心的回话超时过期了 那么久认为主服务器已无法正常运行,集群会自动启动某个备份服务器来替代主服务器

四、kakfa的核心架构
  生产者发送消息给kakfa服务器
  消费者从kakfa服务器读取消息
  kakfa服务器依托zookeeper集群进行服务的协调管理
五、producer概览
  bootstrap.servers:配置kafka集群地址,如果kafka集群中机器数很多 那么只需要指定部分broker即可 不需要列出所有的机器 因为不管指定几台机器 producer都会通过该参数找到并发现集群中所有的broker,该参数指定多台机器只是为了故障转移,这样即使某一台broker挂掉了 producer重启后依然可以通过该参数指定的其它连入kafka集群

  key.serializer:该参数就是为消息的key做序列化(被发送到broker端的任何消息的格式都必须是字节数组)

  value.serializer:该参数就是为消息体(value)做序列化
注意:key.serializer 和 value.serializer这两个参数都必须是全限定类名

  消息发送 send(所有的写入操作默认是异步的)
分为同步发送和异步发送+回调(callback)两种方式

同步实现代码:调用 producer.send(record).get()无限等待结果返回实现同步发送的效果;

异步实现:可获取到发送结果 这就是所谓的回调机制
send方法提供了回调类参数来实现异步发送以及对发送结果的响应
producer.send(record,new Callback(){

})Callback就是发送消息的回调类

posted @ 2019-01-02 15:50  一股清流的世界  阅读(315)  评论(0编辑  收藏  举报