topic

1 入门篇!大白话带你认识 Kafka

守給你的承諾、 提交于 2020-02-21 05:51:48
前言 Kafka 是我在疫情期间在游戏之余学的。虽然之前用过 ActiveMQ 和 RabbitMQ,但是在 Kafka 这门技术面前我也算是一个初学者。文章中若有说法有点完善或者不准确的地方敬请指出。 今天我们来聊聊 Kafka ,主要是带你重新认识一下 Kafka,聊一下 Kafka 中比较重要的概念和问题。在后面的文章中我会介绍: Kafka 的一些高级特性比如工作流程。 使用 Docker 安装 Kafka 并简单使用其发送和消费消息。 Spring Boot 程序如何使用 Kafka 作为消息队列。 我们现在经常提到 Kafka 的时候就已经默认它是一个非常优秀的消息队列了,我们也会经常拿它给 RocketMQ、RabbitMQ 对比。我觉得 Kafka 相比其他消息队列主要的优势如下: 极致的性能 :基于 Scala 和 Java 语言开发,设计中大量使用了批量处理和异步的思想,最高可以每秒处理千万级别的消息。 生态系统兼容性无可匹敌 :Kafka 与周边生态系统的兼容性是最好的没有之一,尤其在大数据和流计算领域。 实际上在早期的时候 Kafka 并不是一个合格的消息队列,早期的 Kafka 在消息队列领域就像是一个衣衫褴褛的孩子一样,功能不完备并且有一些小问题比如丢失消息、不保证消息可靠性等等。当然,这也和 LinkedIn 最早开发 Kafka

kafka集群搭建

一世执手 提交于 2020-02-20 08:45:33
首先搭建zookeeper集群: 拷贝zoo_sample.cfg为zoo.cfg(启动时会默认调用这个文件) zoo.cfg # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/var/zoodata # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients

jquery-validation验证插件

≡放荡痞女 提交于 2020-02-20 07:52:21
参考网站: 菜鸟教程 一.导入js <script src="http://static.runoob.com/assets/jquery-validation-1.14.0/lib/jquery.js"></script> <script src="http://static.runoob.com/assets/jquery-validation-1.14.0/dist/jquery.validate.min.js"></script> 二.默认校验规则 序号 规则 描述 1 required:true 必须输入的字段。 2 remote:"check.php" 使用 ajax 方法调用 check.php 验证输入值。 3 email:true 必须输入正确格式的电子邮件。 4 url:true 必须输入正确格式的网址。 5 date:true 必须输入正确格式的日期。日期校验 ie6 出错,慎用。 6 dateISO:true 必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22。只验证格式,不验证有效性。 7 number:true 必须输入合法的数字(负数,小数)。 8 digits:true 必须输入整数。 9 creditcard: 必须输入合法的信用卡号。 10 equalTo:"#field" 输入值必须和 #field 相同。 11

kafka 2.12在linux下的安装部署及java客户端对接

风格不统一 提交于 2020-02-19 14:46:10
一、下载kafka_2.12-2.4.0.tgz并解压至/home/kafka_2.12-2.4.0 二、配置kafka 2.1 创建kafka日志文件夹:/home/kafka_2.12-2.4.0/logs 2.2 创建zookeeper数据目录:/tmp/zookeeper 2.3 配置/home/kafka_2.12-2.4.0/config/server.properties 内容如下(SSL证书在下面介绍): ssl.keystore.location=/home/ca/server/server.keystore.jks ssl.keystore.password=mima123 ssl.key.password=mima123 ssl.truststore.location=/home/ca/trust/server.truststore.jks ssl.truststore.password=mima123 ssl.client.auth=required ssl.enabled.protocols=TLSv1.2,TLSv1.1,TLSv1 ssl.keystore.type=JKS ssl.truststore.type=JKS ssl.endpoint.identification.algorithm= #security.inter.broker

大数据:Kafka重要概念

人走茶凉 提交于 2020-02-18 12:35:39
1kafka 的iSR,AR代表什么 kafka需要所有的iSR全部同步完成,则表示同步成功 AR:分区的所有副本 1、 AR 在Kafka中维护了一个AR列表,包括所有的分区的副本。AR又分为ISR和OSR。 AR = ISR + OSR。 AR、ISR、OSR、LEO、HW这些信息都被保存在Zookeeper中。 1. ISR ISR中的副本都要同步leader中的数据,只有都同步完成了数据才认为是成功提交了,成功提交之后才能供外界访问。 在这个同步的过程中,数据即使已经写入也不能被外界访问,这个过程是通过LEO-HW机制来实现的。 2. OSR OSR内的副本是否同步了leader的数据,不影响数据的提交,OSR内的follower尽力的去同步leader,可能数据版本会落后。 最开始所有的副本都在ISR中,在kafka工作的过程中,如果某个副本同步速度慢于replica.lag.time.max.ms指定的阈值,则被踢出ISR存入OSR,如果后续速度恢复可以回到ISR中。 3. LEO LogEndOffset:分区的最新的数据的offset,当数据写入leader后,LEO就立即执行该最新数据。相当于最新数据标识位。 4. HW HighWatermark:只有写入的数据被同步到所有的ISR中的副本后,数据才认为已提交,HW更新到该位置,HW之前的数据才可以被消费者访问

sparkStreaming结合kafka取存数据

让人想犯罪 __ 提交于 2020-02-17 14:20:45
目录 一、说明 1、环境介绍 2、测试业务介绍 3、目的 二、理论基础 1、低效率的代码 2、这样提升效率和灵活性 (1)对KafkaProducer进行封装便于广播 (2)初始化KafkaSink,并广播 (3)使用广播变量发送数据到Kafka 三、完整业务程序展示 1、配置文件sparkStreaming.properties 2、动态加载配置文件LoadParameter类 3、主程序Kafka2SparkStreaming2Kafka 四、启动程序测试 1、创建相关kafka主题 2、kafka生产数据到程序 3、从写入到的kafka主题中读取数据 一、说明 1、环境介绍 spark:2.2.1 kafka:kafka_2.10-0.10.2.1 2、测试业务介绍 此篇博客的简单逻辑主要是利用sparkStreaming技术从kafka中读取数据,为了方便暂不进行数据处理,然后将读取的数据直接再存入kafka。 3、目的 掌握sparkStreaming+kafka的运用原理及注意事项,以便在大型项目中运用的游刃有余; 二、理论基础 1、低效率的代码 input.foreachRDD(rdd => // 不能在这里创建KafkaProducer rdd.foreachPartition(partition => partition.foreach { case x:

Kafka Consumer

Deadly 提交于 2020-02-17 09:22:48
基本用法 topic_name = 'my_topic_name' consumer = KafkaConsumer(topic_name, bootstrap_servers=['172.16.89.80:9092']) # consumer是一个消息队列,当后台有消息时,这个消息队列就会自动增加.所以遍历也总是会有数据,当消息队列中没有数据时,就会堵塞等待消息到来 for msg in consumer: recv = "%s:%d:%d: key=%s value=%s" % (msg.topic, msg.partition, msg.offset, msg.key, msg.value) print recv 指定分区、offset、消费组 #encoding:utf8 from kafka import KafkaConsumer, TopicPartition my_topic = "my_topic_name" # 指定需要消费的主题 consumer = KafkaConsumer( bootstrap_servers = "192.168.70.221:19092,192.168.70.222:19092,192.168.70.223:19092", # kafka集群地址 group_id = "my_group_a", # 消费组id enable_auto

JMS消息类型模型(点对点,发布/订阅)

泄露秘密 提交于 2020-02-16 23:12:59
JMS,Java Message Service,是JavaEE平台最重要的规范之一, 也是企业开发中经常使用到的异步技术。JMS规范目前支持两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic)。 点对点: 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。这里要注意: 消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。 Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。 发布/订阅 消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。 在使用JMS服务时,可以通过需求来确定是使用queue还是topic。 来源: https://www.cnblogs.com/sunxucool/archive/2013/01/24/2874387.html

(转)再过半小时,你就能明白kafka的工作原理了

戏子无情 提交于 2020-02-16 09:52:19
为什么需要消息队列   周末无聊刷着手机,某宝网APP突然蹦出来一条消息“为了回馈老客户,女朋友买一送一,活动仅限今天!”。买一送一还有这种好事,那我可不能错过!忍不住立马点了去。于是选了两个最新款,下单、支付一气呵成!满足的躺在床上,想着马上有女朋友了,竟然幸福的失眠了……   第二天正常上着班,突然接到快递小哥的电话:   小哥:“你是xx吗?你的女朋友到了,我现在在你楼下,你来拿一下吧!”。   我:“这……我在上班呢,可以晚上送过来吗?“。   小哥:“晚上可不行哦,晚上我也下班了呢!”。   于是两个人僵持了很久……   最后小哥说,要不我帮你放到楼下小芳便利店吧,你晚上下班了过来拿,尴尬的局面这才得以缓解!   回到正题,如果没有小芳便利店,那快递小哥和我的交互图就应该如下:         会出现什么情况呢?   1、为了这个女朋友,我请假回去拿(老板不批)。   2、小哥一直在你楼下等(小哥还有其他的快递要送)。   3、周末再送(显然等不及)。   4、这个女朋友我不要了(绝对不可能)!   小芳便利店出现后,交互图就应如下:         在上面例子中,“快递小哥”和“买女朋友的我”就是需要交互的两个系统,小芳便利店就是我们本文要讲的-“消息中间件”。总结下来小芳便利店(消息中间件)出现后有如下好处:    1、 解耦   快递小哥手上有很多快递需要送

kafka的一些常用命令

馋奶兔 提交于 2020-02-15 15:19:56
依次在各节点上启动: kafkabin/kafka-server-start.sh config/server.properties 查看当前服务器中的所有topic bin/kafka-topics.sh --list --zookeeper hadoop01:2181 创建topic bin/kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 3 --topic CustomerContacts 删除topic bin/kafka-topics.sh --delete --zookeeper hadoop01:2181 --topic CustomerContacts 需要server.properties中设置delete.topic.enable=true否则只是标记删除或者直接重启。 通过shell命令发送消息 sh bin/kafka-console-producer.sh --broker-list kafka01:9092 --topic test 通过shell消费消息 bin/kafka-console-consumer.sh --zookeeper hadoop01:2181 --from-beginning --topic test