分布式消息队列 Kafka

2016-02-25 杜亦舒

Kafka是一个高吞吐量的、分布式的消息系统,由Linkedin开发,开发语言为scala

具有高吞吐、可扩展、分布式等特点

适用场景

活动数据统计

活动数据包括页面访问量(Page View)、被查看内容方面的信息、搜索情况等内容

先以日志的形式存储,然后周期性地对这些文件进行统计分析

运营数据统计

收集服务器的性能数据(CPU、内存、IO使用率 ……),之后进行统计

Linkedin就是基于这类需求开发出了Kafka,所以kafka最适合的场景为

一个日志集群,各种服务器将它们自身的日志发送到集群中进行统一汇总和存储,然后其它机器从集群中拉取消息进行分析处理,数据挖掘

整体架构

kafka体系包括以下部分:

(1)生产者 Producer

(2)broker集群

(3)话题 Topic(可以理解为queue)

(4)消费者 Consumer

(5)Zookeeper集群

可以在Kafka中创建多个Topic,Producer向Topic中发送消息,Consumer从Topic中获取消息



为了高效的读写消息,topic都被切分为多个分区partition,放入不同的broker中

topic的partition类似于数据库的分表,可以根据消息的key进行分区

例如key为userid,可以根据userid进行分组,把不同userid段的消息放入不同的partition,提高读写性能

为了保证高可用性,每个partition都有多个备份,分别保存在不同的broker中

其中有一个partition为leader,负责读写,其余的为slave,当leader失效时,会从slave中再选举出一个leader



每个partition也不是一个独立的文件,被分为了多个片段segment



Kafka通过Zookeeper管理集群配置,选举leader

应用示例

需求

监控用户交易行为,当交易金额过大时,标识出异常

实现

最新文章

  1. GDB调试汇编堆栈过程分析
  2. CF715C:Digit Tree
  3. 使用Android应用调用Web Service
  4. Java从零开始学四十二(DOM解析XML)
  5. 解决SQL Server Always 日志增大的问题-摘自网络
  6. Visual Assist X 10.6.1837完美破解版(带VS2010破解)
  7. 编写一个单独的Web Service for Delphi7(步骤)
  8. java中ExecutorService接口
  9. MATLAB介绍
  10. box-shadow 被其他div遮住 shadow was hidden/covered by another div
  11. Hdu 1158 Employment Planning(DP)
  12. Eclipse插件手动安装
  13. VueJs(2)---VueJs开发环境的搭建和讲解index.html如何被渲染
  14. Vue.js 技术揭秘(学习) slot
  15. in exists
  16. docker 应用-1(安装以及基础命令)
  17. HTTP长连接、短连接究竟是什么?
  18. Spring Boot 2.0(七):Spring Boot 如何解决项目启动时初始化资源
  19. MySql 索引 查询 优化
  20. 通过sqli-labs学习sql注入——基础挑战之less1-3

热门文章

  1. C#调用windows API的一些方法
  2. charles 之 ssl proxy 设置(https抓包)
  3. Matlab基本函数-conj函数
  4. CopyFile类通过调用这个类的delete(String filePath)方法可以组合成一个Cut类
  5. 获取浏览器信息 c#
  6. MVC配置ckeditor+ckfinder
  7. python27 + windows7 报错 No module named requests
  8. C# 获取当前路径7种方法
  9. presto的动态化应用(一):presto节点的横向扩展与伸缩
  10. seaJS