kafka的讲解与Linux上安装

目录

1、Kafka背景

2、Kafka应用场景

3、Kafka架构原理

3.1、Producer And Consumer

3.2、Topic

4、安装教程


首先我们先了解一下kafka的作用与背景(如果已非常了解kafka那么请直接跳过)

1、Kafka背景

        Kafka它本质上是一个消息系统,由当时从LinkedIn出来创业的三人小组开发,他们开发出了Apache Kafka实时信息队列技术,该技术致力于为各行各业的公司提供实时数据处理服务解决方案。Kafka为LinkedIn的中枢神经系统,管理从各个应用程序的汇聚,这些数据经过处理后再被分发到其他地方。Kafka不同于传统的企业信息队列系统,它是以近乎实时的方式处理流经一个公司的所有数据,目前已经服务于LinkedIn、Netflix、Uber以及Verizon,并为此建立了实时信息处理平台。

        流水数据是所有站点对其网站使用情况做报表时都要用到的数据中最常用的一部分,流水数据包括PV,浏览内容信息以及搜索记录等。这些数据通常是先以日志文件的形式存在,然后有周期的去对这些日志文件进行统计分析处理,然后获得需要的KPI指标结果。

2、Kafka应用场景

我们在接触一门新技术或是新语言时,得明白这门技术(或是语言)的应用场景,也就说要明白它能做什么,服务的对象是谁,下面用一个图来说明,如下图所示:

        首先,Kafka可以应用于消息系统,比如,当下较为热门的消息推送,这些消息推送系统的消息源,可以使用Kafka作为系统的核心组建来完成消息的生产和消息的消费。然后是网站的行迹,我们可以将企业的Portal,用户的操作记录等信息发送到Kafka中,按照实际业务需求,可以进行实时监控,或者做离线处理等。最后,一个是日志收集,类似于Flume套件这样的日志收集系统,但Kafka的设计架构采用push/pull,适合异构集群,Kafka可以批量提交消息,对Producer来说,在性能方面基本上是无消耗的,而在Consumer端中,我们可以使用HDFS这类的分布式文件存储系统进行存储。

3、Kafka架构原理

        Kafka的设计之初是希望做一个统一的信息收集平台,能够实时的收集反馈信息,并且具有良好的容错能力。Kafka中我们最直观的感受就是它的消费者与生产者,如下图所示:

3.1、Producer And Consumer

         这里Kafka对消息的保存是根据Topic进行归类的,由消息生产者(Producer)消息消费者(Consumer)组成,另外,每一个Server称为一个Broker。对于Kafka集群而言,Producer和Consumer都依赖于ZooKeeper来保证数据的一致性。

3.2、Topic

在每条消息输送到Kafka集群后,消息都会由一个Type,这个Type被称为一个Topic,不同的Topic的消息是分开存储的。如下图所示:

         一个Topic会被归类为一则消息,每个Topic可以被分割为多个Partition,在每条消息中,它在文件中的位置称为Offset,用于标记唯一一条消息。在Kafka中,消息被消费后,消息仍然会被保留一定时间后在删除,比如在配置信息中,文件信息保留7天,那么7天后,不管Kafka中的消息是否被消费,都会被删除;以此来释放磁盘空间,减少磁盘的IO消耗

        在Kafka中,一个Topic的多个分区,被分布在Kafka集群的多个Server上,每个Server负责分区中消息的读写操作。另外,Kafka还可以配置分区需要备份的个数,以便提高可用行。由于用到来ZK来协调,每个分区都有一个Server为Leader状态,服务对外响应(如读写操作),若该Leader宕机,会由其他的Follower来选举出新的Leader来保证集群的高可用性。

4、安装教程

使用docker-compose 搭建 kafka集群 + 可视化工具

Docker-compose简介

Docker Compose是一个用来定义和运行复杂应用的Docker工具。

        一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 
        Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
注意:使用 docker-compose 搭建,需要先安装(建议使用国内镜像下载)

# 官方地址
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 
# 国内镜像
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

docker-compose授权

# 授权
sudo chmod +x /usr/local/bin/docker-compose
 
# 查看一下version,显示有版本号那就说明安装成功了
docker-compose version

 创建目录

mkdir /usr/local/docker/kafka

进入目录

cd /usr/local/docker/kafka

创建 docker-compose 文件(:wq!shift+z+z进行保存)

vim docker-compose.yml

配置(只需要zookeeper容器ip服务器id需要进行替换 “//”不需要删除)

version: '3'
networks:
  docker_network:
    external: false
services:
  zookeeper:
    image: wurstmeister/zookeeper
    networks:
      - docker_network
    container_name: zookeeper
    ports:
      - 12181:2181
    environment:
      - TZ=Asia/Shanghai
 
  kafka:
    image: wurstmeister/kafka
    networks:
      - docker_network
    container_name: kafka00
    ports:
      - 19090:19090
    environment:
      - TZ=Asia/Shanghai
      - KAFKA_BROKER_ID=0
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper容器ip:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://服务器ip:19090
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:19090
  
  kafka1:
    image: wurstmeister/kafka
    networks:
      - docker_network
    container_name: kafka01
    ports:
      - 19091:19091
    environment:
      - TZ=Asia/Shanghai
      - KAFKA_BROKER_ID=1
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper容器ip:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://服务器ip:19091
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:19091
  kafka2:
    image: wurstmeister/kafka
    networks:
      - docker_network
    container_name: kafka02
    ports:
      - 19092:19092
    environment:
      - TZ=Asia/Shanghai
      - KAFKA_BROKER_ID=2
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper容器ip:2181
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://服务器ip:19092
      - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:19092

配置好后先进行下一步操作(查找好zookeeperIp后回来进行修改)

启动zookeeper

docker-compose up -d zookeeper

查询容器ip     

#查找容器
docker ps 
#查看容器id
docker inspect 容器id
 
/// 运行完  翻到最下面   查看容器ip 并保存备用

 

获得容器Id后重新编译配置依次修改(:wq!shift+z+z进行保存)

vim docker-compose.yml

全部进行操作完毕后进行启动

kafka00:

docker-compose up -d kafka

kafka01:

docker-compose up -d kafka1

kafka02:

docker-compose up -d kafka2

查看是否成功

docker ps

 (如果docker ps查看发现没有,进入docker ps -a后查看有就说明镜像未启动成功,返回查看docker-compose.yml的服务器ID是否对应上,或者粘贴进去时是否缺少东西,或者//有没有被删除)

kafka-map 可视化工具

  只需一行命令      (因为我的8080端口被占用 故映射其他端口 根据个人爱好设置)

docker run -d -p 9001:8080 -v /opt/kafka-map/data:/usr/local/kafka-map/data -e DEFAULT_USERNAME=admin -e DEFAULT_PASSWORD=admin --name kafka-map --restart always dushixiang/kafka-map:latest

账号密码默认:admin

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值