kafka是一个分布式,基于subscribe-publish的消息系统

特性:高吞吐量、低延迟、可扩展性、持久性(消息持久化到本地磁盘)、可靠性、容错性(n个副本,允许n-1个节点失败)、高并发(支持数千个客户端同时读写)

设计思想:

(1)       Consumer group:多个consumer可以组成一个group(group-id区分),每个消息只能被组中的一个consumer消费,同时消费一个消息的consumer一定不在同一组;

(2)       消息状态:kafka中,消息的状态被保存在consumer中,节点(broker)不关心什么消息被谁消费了,只保存偏移量(指向partition,即分区中下一个即将被消费的消息);

(3)       消息的保存:消息会被持久化到本地磁盘中,而且可以(可配置)长期保存,以便consumer可以多次消费;

(4)       批量发送:kafka支持以消息集合为单位进行批量发送,从而提高效率

(5)       异步:producer只管向broker push消息,consumer只管从broker pull消息,这个过程是异步的,不存在谁等谁;

(6)       集群:kafka集群中的broker地位相同,没有主从关系,可以随意增加或删除任何一个broker,kafka0.8.x通过metadataAPI进行负载均衡,kafka0.7.x主要靠zookeeper进行负载均衡;

(7)       分区partition:kafka的broker支持消息分区,producer决定将消息发送到哪个分区,分区中消息的顺序即是producer发送的顺序,一个主题可以有多个分区。

架构组件:

topic:主题,kafka中发布订阅的对象

producer:向topic发布消息的一端

consumer:从topic订阅消息的一端

broker:kafka的一个服务实例,即是一个kafka服务器

图 1 kafka集群结构图

topic和partition

一个topic有多个partition,每个partition中的消息都是有序的,kafka的节点broker会维护一个消息的偏移(index)唯一确定一个消息

图 2 topic和partition关系图

kafka学习总结之kafka简介的更多相关文章

  1. kafka学习2:kafka集群安装与配置

    在前一篇:kafka学习1:kafka安装 中,我们安装了单机版的Kafka,而在实际应用中,不可能是单机版的应用,必定是以集群的方式出现.本篇介绍Kafka集群的安装过程: 一.准备工作 1.开通Z ...

  2. Kafka学习笔记之Kafka背景及架构介绍

    0x00 概述 本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比.并介绍了Kafka的架构,Producer消息路由,Consumer Group以及由其实现的不 ...

  3. 【kafka学习之五】kafka运维:kafka操作日志设置和主题删除

    一.操作日志 首先附上kafka 操作日志配置文件:log4j.properties 根据相应的需要设置日志. #日志级别覆盖规则 优先级:ALL < DEBUG < INFO <W ...

  4. Kafka学习之二 Kafka安装和使用

    部署环境Linux(Centos 6.5),JDK 1.8.0,zookeeper-3.4.12,kafka_2.11-2.0.0. 1. 单机环境     官方建议使用JDK 1.8版本,因此本文使 ...

  5. kafka学习1:kafka安装

    一.环境准备 1.jdk 如果不会安装linux下的jdk,参考这篇文章:http://www.cnblogs.com/gudi/p/7812033.html   2.kafka wget –c ht ...

  6. Kafka学习笔记之Kafka三款监控工具

    0x00 概述 在之前的博客中,介绍了Kafka Web Console这 个监控工具,在生产环境中使用,运行一段时间后,发现该工具会和Kafka生产者.消费者.ZooKeeper建立大量连接,从而导 ...

  7. 【kafka学习之四】kafka集群性能测试

    kafka集群的性能受限于JVM参数.服务器的硬件配置以及kafka的配置,因此需要对所要部署kafka的机器进行性能测试,根据测试结果,找出符合业务需求的最佳配置. 1.kafka broker j ...

  8. 【kafka学习之三】kafka集群运维

    kafka集群维护一.kafka集群启停#启动kafka/home/cluster/kafka211/bin/kafka-server-start.sh -daemon /home/cluster/k ...

  9. Kafka学习笔记之Kafka性能测试方法及Benchmark报告

    0x00 概述 本文主要介绍了如何利用Kafka自带的性能测试脚本及Kafka Manager测试Kafka的性能,以及如何使用Kafka Manager监控Kafka的工作状态,最后给出了Kafka ...

随机推荐

  1. AngularJS 中<a> 超链接标签不起作用?

    开始时遇到个问题,单页应用<a>元素链接点击就是不跳转页面,使用超链接标签<a href='group'>click</a> 不起作用. 解决方法: 如果你不巧配置 ...

  2. SDN期末作业-通过SDN的应用实现负载均衡

    负载均衡程序 1.程序链接:https://github.com/424baopu/software/tree/master/LoadBalance 2.场景 topo: 场景描述: 服务器host ...

  3. IIS 注册Asp.net 4.0

    32位的Windows:---------------------------------------------------------------------------1. 运行->cmd ...

  4. Python接口自动化--requests 2

    # _*_ encoding:utf-8 _*_ import json import requests #post请求 payload = {"cindy":"hell ...

  5. 【js】实现继承的6种方法

    1.原型链 基本思想:利用原型链让一个引用类型继承另一个引用类型的属性和方法. 让原型对象(B.prototype)等于另一个类型的实例(new A()), 即B.prototype = new A( ...

  6. Spring boot注解使用

    1:@SpringBootApplication 注解 a:scanBasePackages 与scanBasePackageClasses配置Spring启动时扫描的包路径或者扫描的字节码文件 b: ...

  7. node.js cheerio API

    安装 npm install cheerio load var cheerio = require('cheerio'), $ = cheerio.load('<ul id=“fruits”&g ...

  8. Apache服务器的安装与配置

    文档:http://httpd.apache.org/docs/2.4/ 指令:http://httpd.apache.org/docs/2.4/mod/core.html 一.配置文件 语法 * 主 ...

  9. SpringMVC之ajax+select下拉框交互常用方式

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. 在Window下编译LibGeotiff(含Libtiff)

    核心提示:1.GeoTiff简介 GeoTiff是包含地理信息的一种Tiff格式的文件. 1.GeoTiff简介 GeoTiff是包含地理信息的一种Tiff格式的文件.Libgeotiff就是一个操作 ...