centos7搭建kafka集群-第一篇

程序员同行者 程序员同行者     2022-09-30     797

关键词:

Kafka初识

1、Kafka使用背景

 

在我们大量使用分布式数据库、分布式计算集群的时候,是否会遇到这样的一些问题:
  1. 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位
  2. 我想对用户的搜索关键词进行统计,分析出当前的流行趋势
  3. 有些数据,存储数据库浪费,直接存储硬盘效率又低 
这些场景都有一个共同点:
数据是由上游模块产生,上游模块,使用上游模块的数据计算、统计、分析,这个时候就可以使用消息系统,尤其是分布式消息系统!
2、Kafka的定义
What is Kafka:它是一个分布式消息系统,由linkedin使用scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。具有高水平扩展和高吞吐量。
3、Kafka和其他主流分布式消息系统的对比 
定义解释:
1、Java 和 scala都是运行在JVM上的语言。
2、erlang和最近比较火的和go语言一样是从代码级别就支持高并发的一种语言,所以RabbitMQ天生就有很高的并发性能,但是 有RabbitMQ严格按照AMQP进行实现,受到了很多限制。kafka的设计目标是高吞吐量,所以kafka自己设计了一套高性能但是不通用的协议,他也是仿照AMQP( Advanced Message Queuing Protocol   高级消息队列协议)设计的。 
3、事物的概念:在数据库中,多个操作一起提交,要么操作全部成功,要么全部失败。举个例子, 在转账的时候付款和收款,就是一个事物的例子,你给一个人转账,你转成功,并且对方正常行收到款项后,这个操作才算成功,有一方失败,那么这个操作就是失败的。 
对应消在息队列中,就是多条消息一起发送,要么全部成功,要么全部失败。3个中只有ActiveMQ支持,这个是因为,RabbitMQ和Kafka为了更高的性能,而放弃了对事物的支持 。
4、集群:多台服务器组成的整体叫做集群,这个整体对生产者和消费者来说,是透明的。其实对消费系统组成的集群添加一台服务器减少一台服务器对生产者和消费者都是无感之的。
5、负载均衡,对消息系统来说负载均衡是大量的生产者和消费者向消息系统发出请求消息,系统必须均衡这些请求使得每一台服务器的请求达到平衡,而不是大量的请求,落到某一台或几台,使得这几台服务器高负荷或超负荷工作,严重情况下会停止服务或宕机。
6、动态扩容是很多公司要求的技术之一,不支持动态扩容就意味着停止服务,这对很多公司来说是不可以接受的。 
注:
阿里巴巴的Metal,RocketMQ都有Kafka的影子,他们要么改造了Kafka或者借鉴了Kafka,最后Kafka的动态扩容是通过Zookeeper来实现的。 
 
 
Zookeeper是一种在分布式系统中被广泛用来作为:分布式状态管理、分布式协调管理、分布式配置管理、和分布式锁服务的集群。kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kafka系统会捕获这些事件,进行新一轮的负载均衡,客户端也会捕获这些事件来进行新一轮的处理。

Kafka相关概念

1、 AMQP协议

Advanced Message Queuing Protocol (高级消息队列协议)
The Advanced Message Queuing Protocol (AMQP):是一个标准开放的应用层的消息中间件(Message Oriented Middleware)协议。AMQP定义了通过网络发送的字节流的数据格式。因此兼容性非常好,任何实现AMQP协议的程序都可以和与AMQP协议兼容的其他程序交互,可以很容易做到跨语言,跨平台。
 
上面说的3种比较流行的消息队列协议,要么支持AMQP协议,要么借鉴了AMQP协议的思想进行了开发、实现、设计。
2、 一些基本的概念
1、消费者:(Consumer):从消息队列中请求消息的客户端应用程序
2、生产者:(Producer)  :向broker发布消息的应用程序
3、AMQP服务端(broker):用来接收生产者发送的消息并将这些消息路由给服务器中的队列,便于fafka将生产者发送的消息,动态的添加到磁盘并给每一条消息一个偏移量,所以对于kafka一个broker就是一个应用程序的实例
kafka支持的客户端语言:Kafka客户端支持当前大部分主流语言,包括:C、C++、Erlang、Java、.net、perl、PHP、Python、Ruby、Go、Javascript
可以使用以上任何一种语言和kafka服务器进行通信(即辨析自己的consumer从kafka集群订阅消息也可以自己写producer程序) 
 
3、Kafka架构
生产者生产消息、kafka集群、消费者获取消息这样一种架构,如下图:
kafka集群中的消息,是通过Topic(主题)来进行组织的,如下图:
一些基本的概念:
1、主题(Topic):一个主题类似新闻中的体育、娱乐、教育等分类概念,在实际工程中通常一个业务一个主题。
2、分区(Partition):一个Topic中的消息数据按照多个分区组织,分区是kafka消息队列组织的最小单位,一个分区可以看作是一个FIFO( First Input First Output的缩写,先入先出队列)的队列。
kafka分区是提高kafka性能的关键所在,当你发现你的集群性能不高时,常用手段就是增加Topic的分区,分区里面的消息是按照从新到老的顺序进行组织,消费者从队列头订阅消息,生产者从队列尾添加消息。
 
工作图:
 
 
备份(Replication):为了保证分布式可靠性,kafka0.8开始对每个分区的数据进行备份(不同的Broker上),防止其中一个Broker宕机造成分区上的数据不可用。
kafka0.7以上是一个很大的改变:1、增加了备份2、增加了控制借点概念,增加了集群领导者选举

centos7搭建kafka集群-第二篇

好了,本篇开始部署kafka集群Zookeeper集群搭建注:Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群(也可以用kafka自带的ZK,但不推荐)1、软件环境(3台服务器)10.0.20.13110.0.20.13210.0.20.1331、Linux服务器一台、三台、五台... 查看详情

kafka集群安装(centos7环境下)

一、环境操作系统和软件版本介绍1.环境操作系统为CentOSLinuxrelease7.2.1511(Core)可用cat/etc/redhat-release查询2.软件版本Kafka版本为:0.10.0.0二、软件的基础准备由于Kafka集群需要依赖ZooKeeper集群来协同管理,所以需要事先搭建好ZK集群。... 查看详情

二用dockercompose搭建kafka集群

参考技术A本地一台机器,想要模拟多台机器搭建kafka集群,可以通过docker来实现。在另一篇两种方式搭建Zookeeper伪集群:纯手工或使用Dockercompose里,尝试了如何用dockercompose来搭建一个zookeeper集群。在此基础上,我们用dockercompose... 查看详情

kafkakafka集群搭建(代码片段)

...搭建参考:【Kafka】Kafka安装Kafka集群搭建  环境系统:CentOS7.4  kafka版本:2.6.0  由于资源有限,只有一台服务器,本例搭建的是一个伪集群Kafka环境  1、搭建一个zookeeper集群,参考:【ZooKeeper】ZooKeeper安装及简单操作... 查看详情

centos7+kafka+elk6.5.x安装搭建(代码片段)

 Centos7+kafka+ELK6.5.x安装搭建1 数据的流向数据源端使用logstash收集udp514日志输出到kafka中做测试(可选择filebeat,比较轻量级、对CPU负载不大、不占用太多资源;选择rsyslog对kafka的支持是v8.7.0版本及之后版本)。如下流程:l... 查看详情

从零开始搭建kafka集群遇到的问题(代码片段)

...置启动kafka使用kafka创建主题查看主题生产消息消费消息搭建kafka集群搭建zookeeper集群修改配置启动zookeeper集群搭建kafka集群修改配置启动kafka集群使用kafka集群生产消息消费消息安装kafka下载kafka_2.12-3.1.0.tgz链接:https://pan.baidu.... 查看详情

docker搭建kafka集群(代码片段)

Docker搭建kafka集群集群规划镜像版本kafka为什么需要依赖zookeeper创建docker网络搭建zk集群新建文件docker-compose-zk.yml启动搭建kafka集群新建三个挂载文件挂载原因挂载步骤新建docker-compose-kafka.yml启动集群安装kafka-manager新建docker-compose-... 查看详情

kafka集群搭建

环境:ubuntu14.04版本:jdk1.8,zookeeper3.4.10,kafka2.11搭建步骤:1.搭建zookeeper集群参考链接:zookeeper集群搭建2.下载kafka源码包,并上传到服务器下载链接:http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/1.0.0/kafka_2.11-1.0.0.tgz3.解压kafka源码包t 查看详情

kafka环境搭建(代码片段)

文章目录kafka环境搭建单节点集群kafka环境搭建测试环境centos7.8.2003JDK安装下载地址:https://www.oracle.com/java/technologies/downloads/当前下载路径:https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz下载安 查看详情

kafka集群搭建(代码片段)

目录1下载或复制Kafka安装包2解压缩Kafka安装包3配置Kafka集群4Kafka的初步应用4.1创建主题4.2发送消息4.3消费消息1下载或复制Kafka安装包http://archive.apache.org/dist/kafka/0.10.1.0/2解压缩Kafka安装包tar-zxvfkafka_2.11-0.10.1.0.gz3配置Kafka集群配置Ka... 查看详情

kafka学习之路第一篇

kafka官网:http://kafka.apache.org/下载地址:http://mirrors.hust.edu.cn/apache/kafka/0.10.2.0/kafka_2.12-0.10.2.0.tgz 未完待续 查看详情

kafka相关内容总结(kafka集群搭建手记)

...分不是本文的重点,但是kafka需要用到kafka集群,所以先搭建kafka集群。从kafka官方文档看到,kafka似乎在未来的版本希望抛弃zookeep集群,自己维护集群的一致性,拭目以待吧。我们搭建集群使用的是三台同机房的机器,因为zookeep... 查看详情

kafka集群搭建(代码片段)

1.启动Serverhttp://kafka.apache.org/quickstartForKafka,asinglebrokerisjustaclusterofsizeone,sonothingmuchchangesotherthanstartingafewmorebrokerinstances.#下载kafka[[email protected]kafka]#tar-xzfkafk 查看详情

kafka集群的搭建

 Kafka集群的搭建node1  node2  node3kafka须用版本(kafka-0.8.2.2),否则不兼容spark1.61.启动zookeeper集群node1  node2  node3  zkServer.shstart  zkServer.shst 查看详情

搭建kafka集群(代码片段)

前言:按照kafka的文档,搭建一个三个host的集群。当然和kafka的文档还是有区别的:    1).未使用kafka自带的zookeeper    2).kafka文档是一个host的三个进程,这里是使用三个host(vm),每个host运行一个kafka&nb... 查看详情

kafka_2.11-2.0.0_安装部署(代码片段)

...kafka配置文件参数详解参考博文:Kafka【第一篇】Kafka集群搭建参考博文:如何为Kafka集群选择合适的Partitions数量参考博文:KafkaServer.properties参考博文:kafka常用配置【重要】参考博文:kafka常用配置  1.主机规划主机名称IP... 查看详情

docker容器搭建kafka集群

Docker搭建kafka集群?  需求说明:公司目前有三个环境,生产环境,测试和演示环境,再包括开发人员还有开发的环境,服务器上造成了一定的资源浪费,因为环境需要依赖zookeeper和kafka,redis这些服务,只要搭一个环境,... 查看详情

kafka集群搭建

环境:CentOS6.5KAFKA版本: kafka_2.11-0.8.2.1ZOOKEEPER版本: zookeeper-3.4.6JDK: 1.8.0_151SERVER:172.16.2.27、172.16.2.28、172.16.2.29一、准备:1、安装JDK1.82、下载kafka和zookeeper安装包(二进制包)下载地址:kafka:http://k 查看详情