第一章 玩转分布式流处理平台 Kafka
第1集 什么是MQ消息中间件和应用场景
简介:介绍什么是MQ消息中间件和应用场景
-
什么是MQ消息中间件
- 全称MessageQueue,主要是用于程序和程序直接通信,异步+解耦
-
使用场景:
-
核心应用
- 解耦:订单系统-》物流系统
- 异步:用户注册-》发送邮件,初始化信息
- 削峰:秒杀、日志处理
-
跨平台 、多语言
-
分布式事务、最终一致性
-
上下游对接,数据源变动->通知下属
-
RPC调用
-
第2集 架构师的解决方案-业界主流消息队列和技术
-
简介:对比当下主流的消息队列和选择问题
-
业界主流的消息队列:Apache ActiveMQ、Kafka、RabbitMQ、RocketMQ
-
ActiveMQ:http://activemq.apache.org/
- Apache出品,历史悠久,支持多种语言的客户端和协议,支持多种语言Java, .NET, C++ 等
- 基于JMS Provider的实现
- 缺点:吞吐量不高,多队列的时候性能下降,存在消息丢失的情况,比较少大规模使用
-
Kafka:http://kafka.apache.org/
- 是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统(严格意义上是不属于队列产品,是一个流处理平台),它可以处理大规模的网站中的所有动作流数据(网页浏览,搜索和其他用户的行动),副本集机制,实现数据冗余,保障数据尽量不丢失;支持多个生产者和消费者
- 类似MQ,功能较为简单,主要支持常规的MQ功能
-
它提供了类似于JMS的特性,但是在设计实现上完全不同,它并不是JMS规范的实现
- 缺点:运维难度大,文档比较少, 需要掌握Scala
-
-
RocketMQ:RocketMQ · 官方网站 | RocketMQ
- 阿里开源的一款的消息中间件, 纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点, 性能强劲(零拷贝技术),支持海量堆积, 支持指定次数和时间间隔的失败消息重发,支持consumer端tag过滤、延迟消息等,在阿里内部进行大规模使用,适合在电商,互联网金融等领域
- 基于JMS Provider的实现
- 缺点:社区相对不活跃,更新比较快,纯java支持
-
RabbitMQ:Messaging that just works — RabbitMQ
- 是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、C、用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不错
- 缺点:使用Erlang开发,阅读和修改源码难度大
-
第二章 急速入门Apache顶级项目Kafka核心概念+安装部署实战
Kafka
-
Kafka是最初由Linkedin公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目,也是一个开源【分布式流处理平台】,由Scala和Java编写,(也当做MQ系统,但不是纯粹的消息系统)
- open-source distributed event streaming platform
-
核心:一种高吞吐量的分布式流处理平台,它可以处理消费者在网站中的所有动作流数据。
- 比如 网页浏览,搜索和其他用户的行为等,应用于大数据实时处理领域
-
-
官网:Apache Kafka
-
快速开始:Apache Kafka
-
快速认识概念
-
Broker
- Kafka的服务端程序,可以认为一个mq节点就是一个broker
- broker存储topic的数据
-
Producer生产者
- 创建消息Message,然后发布到MQ中
- 该角色将消息发布到Kafka的topic中
-
Consumer消费者:
- 消费队列里面的消息
-
-
-
第2集 【重要】介绍分布式流处理平台kafka核心概念解释
-
核心概念
-
Broker
- Kafka的服务端程序,可以认为一个mq节点就是一个broker
- broker存储topic的数据
-
Producer生产者
- 创建消息Message,然后发布到MQ中
- 该角色将消息发布到Kafka的topic中
-
Consumer消费者:
- 消费队列里面的消息
-
ConsumerGroup消费者组
-
同个topic, 广播发送给不同的group,一个group中只有一个consumer可以消费此消息
-
Topic
-
每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic,主题的意思
-
Partition分区
- kafka数据存储的基本单元,topic中的数据分割为一个或多个partition,每个topic至少有一个partition,是有序的
- 一个Topic的多个partitions, 被分布在kafka集群中的多个server上
- 消费者数量 <=小于或者等于Partition数量
-
Replication 副本(备胎)
- 同个Partition会有多个副本replication ,多个副本的数据是一样的,当其他broker挂掉后,系统可以主动用副本提供服务
- 默认每个topic的副本都是1(默认是没有副本,节省资源),也可以在创建topic的时候指定
- 如果当前kafka集群只有3个broker节点,则replication-factor最大就是3了,如果创建副本为4,则会报错
-
ReplicationLeader、ReplicationFollower
- Partition有多个副本,但只有一个replicationLeader负责该Partition和生产者消费者交互
- ReplicationFollower只是做一个备份,从replicationLeader进行同步
-
ReplicationManager
- 负责Broker所有分区副本信息,Replication 副本状态切换
-
offset
- 每个consumer实例需要为他消费的partition维护一个记录自己消费到哪里的偏移offset
- kafka把offset保存在消费端的消费者组里
-
第3集 阿里云Linux服务器选择和常用软件介绍
简介:阿里云Linux服务器购买和常用软件介绍
-
云厂商
-
环境问题说明
-
务必使用CentOS 7 以上版本,64位系统,不要在Windows系统操作!!!!
-
尽量前面先使用阿里云部署
-
大家本地用虚拟机记得也要CentOS 7.x系统
-
vmware
-
-
-
注意:谁都不能保证每个人-硬件组成-系统版本-虚拟机软件版本都一样
- 出现问题,大家结合报错日志搜索博文解决
- 少数同学 -Win7、Win8、Win10、Mac、虚拟机等等,可能存在兼容问题
第4集 急速部署-Kafka相关环境准备和安装JDK8
简介: 急速部署-Kafka相关环境准备和安装
./kafka-server-start.sh -daemon ../config/server.properties &
-
需要的软件和环境版本说明
-
kafka-xx-yy
- xx 是scala版本,yy是kafka版本(scala是基于jdk开发,需要安装jdk环境)
- 下载地址:Apache Kafka
-
zookeeper
- Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册
- 下载地址:Apache ZooKeeper
-
jdk1.8
-
-
步骤
-
上传安装包(zk、jdk、kafka)
-
安装jdk
-
配置全局环境变量
-
解压:tar -zxvf jdk-8u181-linux-x64.tar.gz
-
重命名 mv jdk-8u181*** jdk 1.8
-
vim /etc/profile
-
配置
-
-
-
JAVA_HOME=/usr/local/software/jdk1.8
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
mkdir /usr/local/software
-
第5集 Linux环境下Zookeeper和Kafka安装启动
简介: Linux环境下Zookeeper和Kafka安装启动
-
安装Zookeeper (默认2181端口)
-
默认配置文件 zoo.cfg
-
启动zk
bin/zkServer.sh start
-
-
-
- 安装Kafka (默认 9092端口)
-
broker.id=0
#修改下面两个配置 ( listeners 配置的ip和advertised.listeners相同时启动kafka会报错)
listeners(内网Ip)
advertised.listeners(公网ip)
#修改zk地址,默认地址
zookeeper.connection=localhost:2181
bin目录启动
#启动
./kafka-server-start.sh ../config/server.properties &
#停止
kafka-server-stop.sh
创建topic
./kafka-topics.sh --create --zookeeper 112.74.55.160:2181 --replication-factor 1 --partitions 1 --topic xdclass-topic
查看topic
./kafka-topics.sh --list --zookeeper 112.74.55.160:2181
-
lsof -i:2181 若此命令不存在
yum install -y lsof
第6集 Linux环境下daemon守护进程运行Kafka
简介: Linux环境下daemon守护进程运行Kafka
- kafka如果直接启动信息会打印在控制台,如果关闭窗口,kafka随之关闭
- 守护进程方式启动
-
第四章 Kafka点对点-发布订阅模型讲解和写入存储流程实战
第1集 Kafka命令行生产者发送消息和消费者消费消息实战
*简介: Kafka命令行生产者发送消息和消费者消费消息实战**
创建topic
./kafka-topics.sh --create --zookeeper 121.40.61.224:2181 --replication-factor 1 --partitions 2 --topic xdclass-topic
查看topic
./kafka-topics.sh --list --zookeeper 112.74.55.160:2181
生产者发送消息
./kafka-console-producer.sh --broker-list 121.40.61.224:9092 --topic version1-topic
消费者消费消息 ( --from-beginning:会把主题中以往所有的数据都读取出来, 重启后会有这个重复消费)
./kafka-console-consumer.sh --bootstrap-server 121.40.61.224:9092 --from-beginning --topic t1
删除topic
./kafka-topics.sh --zookeeper 112.74.55.160:2181 --delete --topic t1
查看broker节点topic状态信息
./kafka-topics.sh --describe --zookeeper 112.74.55.160:2181 --topic xdclass-topic
121.40.61.224
172.21.119.230
未完--------------------------待更新------------------------------------------------------------