中间件kafka
* kafka----一个发布订阅消息系统,中间件;一个分布式、分区、可重复的日志服务
kafka需要了解基础几层结构,生产者订阅者等使用方法,和在高并发、一致性场景使用。
(凡事面试问一致性、高并发都脱离不了消息队列和事务)。
1.常用消息队列框架中间件Kafka
2.基础结构
producer:往kafka发消息的客户端
Consumer:从kafka读消息的客户端
Topic:一个队列
Consumer Group:消费群,发送消息时可以实现广播;可以将一个topic发给多个consumer。
Broker (B):一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。
Partition(P):为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上。
partition保证consumer发送Broker消息的顺序。
2.为什么要分区
可以将日志内容分布在多个服务器上,每个Server都可以保存partition,将topic切分成partition越多保存效率越高
而partition越多意味着容纳consumer越多,有效提升并发消费的能力。
3.高并发一致性场景下的使用
kafka能够保证数据一致性,原因在于,kafka由consumer自己保存当前发送状态,不需要和其他确认。这样会很灵活,能够保证如果需要重新处理消息,可以再从broker获得。
为提高性能,kafka的producer有一种异步发送的操作。producer先将消息放在内存中。
4.kafaka与zookeeper
zookeeper是一种开源、高性能协调应用。用于使kafka实现分布式
主要体现在通过kafka不同集群之间的通信,broker和consumer之间利用zookeeper进行负载均衡。
中间件kafka的更多相关文章
- 初识中间件Kafka
初识中间件Kafka Author:SimplelWu 什么是消息中间件? 非底层操作系统软件,非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件统称为中间件 关注于数据的发送和接 ...
- 物联网架构成长之路(28)-Docker练习之MQ中间件(Kafka)
0. 前言 消息队列MQ,这个在一般的系统上都是会用到的一个中间件,我选择Kafka作为练手的一个中间件,Kafka依赖Zookeeper.Zookeeper安装上一篇博客已经介绍过了. 1. Kaf ...
- Zabbix实战-简易教程--中间件kafka监控
一.环境准备 1.安装kafka Step 1: 下载代码 你可以登录Apache kafka 官方下载.http://kafka.apache.org/downloads.html备注:2.11-1 ...
- 中间件 | kafka简介、使用场景、设计原理、主要配置及集群搭建
开源Java学习 公众号 一.入门 1.简介 Kafka is a distributed,partitioned,replicated commit logservice.它提供了类似于JMS的特性 ...
- Mysql增量写入Hdfs(一) --将Mysql数据写入Kafka Topic
一. 概述 在大数据的静态数据处理中,目前普遍采用的是用Spark+Hdfs(Hive/Hbase)的技术架构来对数据进行处理. 但有时候有其他的需求,需要从其他不同数据源不间断得采集数据,然后存储到 ...
- 物联网架构成长之路(8)-EMQ-Hook了解、连接Kafka发送消息
1. 前言 按照我自己设计的物联网框架,对于MQTT集群中的所有消息,是要持久化到磁盘的,这里采用一个消息队列中间件Kafka作为数据缓冲,缓冲结果存到数据仓库中,以供后续作为数据分析.由于MQTT集 ...
- 记一次线上Kafka消息堆积踩坑总结
2018年05月31日 13:26:59 xiaoguozi0218 阅读数:2018更多 个人分类: 大数据 年后上线的系统,与其他业务系统的通信方式采用了第三代消息系统中间件Kafka.由于是 ...
- 结合docker做flask+kafka数据接口与压力测试
一.需求 需要做实时数据接入的接口.数据最终要写入库,要做到高并发,数据的完整,不丢失数据. 二.技术选型 1.因为只是做简单的接口,不需要复杂功能,所以决定用flask这个简单的python框架(因 ...
- 01 . 消息队列之(Kafka+ZooKeeper)
消息队列简介 什么是消息队列? 首先,我们来看看什么是消息队列,维基百科里的解释翻译过来如下: 队列提供了一种异步通信协议,这意味着消息的发送者和接受者不需要同时与消息保持联系,发送者发送的消息会存储 ...
随机推荐
- ${pageContext.request.contextPath}是JSP取得绝对路径(转载)
${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%> . 也就是取出部署的应用程 ...
- JS高级程序设计第三版——JavaScript简介
JavaScript简史 JavaScript由Netscape(网景)公司在1995年发布,最开始的主要目的是处理以前由服务器端语言负责的一些输入验证操作,以便提高用户体验,后来就慢慢的发展为一门强 ...
- CSS3图片边框
CSS3图片边框 顾名思义就是为边框应用背景图片,它和我们常用的background属性比较相似,语法规则:
- linux 安装和卸载软件
安装: apt-get install cups-pdf 卸载:apt -get remove cups
- 面试题之-------使用TCP/UDP协议的常见协议及端口号
使用TCP协议的常见端口主要有以下几种: (1) FTP:定义了文件传输协议,使用21端口.常说某某计算机开了FTP服务便是启动了文件传输服务.下载文件,上传主页,都要用到FTP服务. (2) Tel ...
- Matlab函数——awgn(高斯噪声)
Matlab函数--awgn awgn 将白色高斯噪声添加到信号中 语法 y = awgn(x,snr) y = awgn(x,snr,sigpower) y = awgn(x,snr,'mea ...
- 操作Active Directory C#
.Net平台操作活动目录Active Directory,使用System.DirectoryServices.ActiveDirectory,主要是User OU 和Group的操作. 代码运行了一 ...
- pip pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool
设置超时时间: pip --default-timeout=100 install Pillow
- 删除所有正在运行和退出的docker实例
docker ps -a能显示所有docker实例的状态,包含已经退出了的: 加上-q参数,只显示container id 使用这个命令,把docker ps -aq产生的输入作为输入传入到docke ...
- c++11之100行实现简单线程池
代码从github上拷的,写了一些理解,如有错误请指正 Threadpool.h #ifndef THREAD_POOL_H #define THREAD_POOL_H #include <ve ...