topic

kafka 知识点

℡╲_俬逩灬. 提交于 2020-03-19 04:54:05
kafka 相关术语: 术语 含义 producer,产生消息 消息生产者,发布消息到 kafka 集群的终端或服务。 consumer,消费消息 从 kafka 集群中消费消息的终端或服务。 topic,主题,在主题里分布消息 每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。 broker,服务器 kafka 集群中包含的服务器。 Consumer group high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。 partition partition 是物理上的概念,每个 topic 包含一个或多个 partition。kafka 分配的单位是 partition。 replica partition 的副本,保障 partition 的高可用。 leader replica 中的一个角色, producer 和 consumer 只跟 leader 交互。 follower replica 中的一个角色,从 leader 中复制数据。 controller kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种

kafka原理解析

你离开我真会死。 提交于 2020-03-18 22:48:48
两张图读懂kafka应用: Kafka 中的术语 broker:中间的kafka cluster,存储消息,是由多个server组成的集群。 topic:kafka给消息提供的分类方式。broker用来存储不同topic的消息数据。 producer:往broker中某个topic里面生产数据。 consumer:从broker中某个topic获取数据。 Kafka 中的术语设计: 1、Broker 中间的kafka cluster,存储消息,是由多个server组成的集群。 2、topic与消息 kafka将所有消息组织成多个topic的形式存储,而每个topic又可以拆分成多个partition,每个partition又由一个一个消息组成。每个消息都被标识了一个递增序列号代表其进来的先后顺序,并按顺序存储在partition中。 这样,消息就以一个个id的方式,组织起来。 producer选择一个topic,生产消息,消息会通过分配策略append到某个partition末尾。 consumer选择一个topic,通过id指定从哪个位置开始消费消息。消费完成之后保留id,下次可以从这个位置开始继续消费,也可以从其他任意位置开始消费。 上面的id在kafka中称为offset,这种组织和处理策略提供了如下好处: 消费者可以根据需求,灵活指定offset消费。 保证了消息不变性

RocketMQ总结

怎甘沉沦 提交于 2020-03-18 18:53:08
架构 概念模型 最基本的概念模型与扩展后段概念模型 存储模型 RocketMQ吐血总结 User Guide RocketMQ是一款分布式消息中间件,最初是由阿里巴巴消息中间件团队研发并大规模应用于生产系统,满足线上海量消息堆积的需求, 在2016年底捐赠给Apache开源基金会成为孵化项目,经过不到一年时间正式成为了Apache顶级项目;早期阿里曾经基于ActiveMQ研发消息系统, 随着业务消息的规模增大,瓶颈逐渐显现,后来也考虑过Kafka,但因为在低延迟和高可靠性方面没有选择,最后才自主研发了RocketMQ, 各方面的性能都比目前已有的消息队列要好,RocketMQ和Kafka在概念和原理上都非常相似,所以也经常被拿来对比;RocketMQ默认采用长轮询的拉模式, 单机支持千万级别的消息堆积,可以非常好的应用在海量消息系统中。 NameServer可以部署多个,相互之间独立,其他角色同时向多个NameServer机器上报状态信息,从而达到热备份的目的。 NameServer本身是无状态的,也就是说NameServer中的Broker、Topic等状态信息不会持久存储,都是由各个角色定时上报并 存储到内存中的(NameServer支持配置参数的持久化,一般用不到)。 为何不用ZooKeeper?ZooKeeper的功能很强大,包括自动Master选举等

Ros机器人之(四)发布Publisher消息

拥有回忆 提交于 2020-03-17 04:13:59
Ros机器人之(四)发布Publisher消息 从基础学习,发布消息Publisher 首先创建功能包,命令+名称+功能包依赖 catkin_create_pkg learning-topic roscpp rospy std_msgs geometry_msgs turtlesim src文件夹下创建一个publisher.cpp touch publisher.cpp 内容如下: /* publisher topic */ # include <ros/ros.h> # include <geometry_msgs/Twist.h> int main ( int argc , char * * argv ) { //初始节点化 ros :: init ( argc , argv , "publisher" ) ; //创建节点句柄 ros :: NodeHandle n ; //创建发布者,发布的话题及队列长度用于缓存 ros :: Publisher turtle_vel_pub = n . advertise < geometry_msgs :: Twist > ( "/turtle1/cmd_vel" , 10 ) ; //循环频率 ros :: Rate loop_rate ( 10 ) ; int count = 0 ; //循环 while ( ros :: ok

Kafka集群模式部署

橙三吉。 提交于 2020-03-16 07:56:02
环境:kafka 0.8.1.1 基本概念 Kafka维护按类区分的消息,称为主题(topic) 生产者(producer)向kafka的主题发布消息 消费者(consumer)向主题注册,并且接收发布到这些主题的消息 kafka以一个拥有一台或多台服务器的集群运行着,每一台服务器称为broker zookeeper配置 修改zk的配置文件 conf/zoo.cfg server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888 启动zookeeper集群 $ZK_HOME/bin/zkServer.sh start kafka配置 分别修改kafka集群中每个节点的 config/server.properties ,这里做的是最简配置 #不同的节点上broker不同,可以从0开始递增 broker.id=0 #本地ip host.name=本机ip #broker端口号(默认为9092) port=9092 #kafkalog日志位置 log.dirs=/data/kafka-logs #zookeeper地址(zk监听端口默认为2181) zookeeper.connect=zk1:2181,zk2:2181,zk3:2181 启动broker(每台节点都要执行) bin/kafka-server

大型网站架构之分布式消息队列

北城余情 提交于 2020-03-14 13:15:45
以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述 消息队列应用场景 消息中间件示例 JMS消息服务 常用消息队列 参考(推荐)资料 本次分享总结 一、消息队列概述 消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。 目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。 二、消息队列应用场景 以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。 2.1异步处理 场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种1.串行的方式;2.并行方式。 (1)串行方式:将注册信息写入数据库成功后,发送注册邮件,再发送注册短信。以上三个任务全部完成后,返回给客户端。(架构KKQ:466097527,欢迎加入) (2)并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信。以上三个任务完成后,返回给客户端。与串行的差别是,并行的方式可以提高处理的时间。 假设三个业务节点每个使用50毫秒钟,不考虑网络等其他开销,则串行方式的时间是150毫秒

大型网站架构系列:分布式消息队列(二)

人盡茶涼 提交于 2020-03-14 13:15:06
本文是大型网站架构系列:消息队列(二),主要分享JMS消息服务,常用消息中间件(Active MQ,Rabbit MQ,Zero MQ,Kafka)。【第二篇的内容大部分为网络资源的整理和汇总,供大家学习总结使用,最后有文章来源】 本次分享大纲 消息队列概述(见第一篇: 大型网站架构系列:分布式消息队列(一) ) 消息队列应用场景(见第一篇: 大型网站架构系列:分布式消息队列(一) ) 消息中间件示例(见第一篇: 大型网站架构系列:分布式消息队列(一) ) JMS消息服务 常用消息队列 参考(推荐)资料 本次分享总结 四、JMS消息服务 讲消息队列就不得不提JMS 。JMS(JAVA Message Service,java消息服务)API是一个消息服务的标准/规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。它使分布式通信耦合度更低,消息服务更加可靠以及异步性。 在EJB架构中,有消息bean可以无缝的与JM消息服务集成。在J2EE架构模式中,有消息服务者模式,用于实现消息与应用直接的解耦。 4.1消息模型 在JMS标准中,有两种消息模型P2P(Point to Point),Publish/Subscribe(Pub/Sub)。 4.1.1 P2P模式 P2P模式包含三个角色:消息队列(Queue),发送者(Sender),接收者(Receiver)

Kafka——SpringBoot整合(消费者)

北战南征 提交于 2020-03-13 23:03:30
目录 单线程消费 pom consumerConfig consumer 批量消费 javaConfig 消费者 BatchConsumer 选择自动提交还是手动提交方式和业务场景相关,可以查看前面的博客,根据原理进行选择。 单线程消费 pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-streams</artifactId> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions>

分布式消息队列

时光总嘲笑我的痴心妄想 提交于 2020-03-13 03:30:56
分布式消息队列 kafka介绍 基本架构 Kafka是开源的分布式消息队列,能够轻松实现高吞吐、可扩展、高可用,并且部署简单快速、开发接口丰富。 kafka分布式消息队列的作用: 解耦:将消息生产阶段和处理阶段拆分开,两个阶段互相独立各自实现自己的处理逻辑,通过kafka提供的消息写入和消费接口实现对消息的连接处理。降低开发复杂度,提高系统稳定性。 高吞吐量:kafka通过顺序读写磁盘提供可以和内存随机读写相匹敌的读写速度,灵活的客户端API设计,利用Linux操作系统提供的“零拷贝”特性减少消息网络传输时间,提供端到端的消息压缩传输,对同一主题下的消息采用分区存储,kafka通过诸多良好的特性利用廉价的机器就可以轻松实现高吞吐率。 高容错、高可用:kafka允许用户对分区配置多副本,kafka将副本均匀分配到各个broker存储,保证同一个分区的副本不会再同一台机器上存储(集群模式下),多副本之间采用Leader-Follower机制同步消息,只有Leader对外提供读写服务,当Leader以外失败、Broker进程关闭、服务宕机等情况导致数据不可用时,kafka会从Follwer中选择一个Leader继续提供读写服务。 可扩展:理论上kafka的性能随着Broker的增多而增加,增加一个Broker只需要为新增加的Broker设置一个唯一编号,编写好配置文件后

搭建zookeeper和Kafka集群

一世执手 提交于 2020-03-12 16:40:55
搭建zookeeper和Kafka集群: 本实验拥有3个节点,均为CentOS 7系统,分别对应IP为10.211.55.11、10.211.55.13、10.211.55.14,且均有相同用户名 (本实验为 jiecxy) 为了方便,先在三台节点上 /etc/hosts 文件内容均添加: 10.211.55.11 master 10.211.55.13 worker1 10.211.55.14 worker2123 一、 安装zookeeper 1. 下载 zookeeper-3.4.8.tar.gz 2. 在 master 节点上安装 zookeeper 解压安装包,并复制配置文件 # 在master节点上 [jiecxy@master ~]$ tar -xzvf zookeeper-3.4.8.tar.gz [jiecxy@master ~]$ cd zookeeper-3.4.8/conf/ [jiecxy@master conf]$ cp zoo_sample.cfg zoo.cfg1234 3. 修改 zoo.cfg [jiecxy@master conf]$ vi zoo.cfg1 修改内容如下: ... # dataDir 最好不要在 /tmp 下 dataDir=/tmp/zookeeper ... # the port at which the clients