topic

Flink读写Kafka

邮差的信 提交于 2019-12-04 03:27:32
/*--> */ /*--> */ Flink 读写 Kafka 在 Flink 中,我们分别用 Source Connectors 代表连接数据源的连接器,用 Sink Connector 代表连接数据输出的连接器。下面我们介绍一下 Flink 中用于读写 kafka 的 source & sink connector 。 Apache Kafka Source Connectors Apache Kafka 是一个分布式的流平台,其核心是一个分布式的发布 - 订阅消息系统,被广泛用于消费与分发事件流。 Kafka 将事件流组织成为 topics 。一个 topic 是一个事件日志( event-log ),保证读入事件的顺序为事件写入的顺序。为了实现可扩展, topic 可以被分为多个 partition ,并分布在集群中的各个节点中。但是在 topic 分区后,由于 consumers 可能会从多个 partition 读入数据,所以此时只能在 partition 级别保证事件的顺序。在 Kafka 中,当前读的位置称为偏移量( offset )。 可以通过 sbt 或 maven 构建 Flink Kafka connector 的依赖,下面是一个 sbt 的例子: // https://mvnrepository.com/artifact/org.apache.flink

kafka集群部署

此生再无相见时 提交于 2019-12-04 02:34:42
虽然kafka集群部署的文章网络的到处都是,但是还是想把自己亲自操作的过程记录一下,同时也可以记录一下遇到的问题,避免以后部署的时候再遇到。 一、安装 1、下载,地址: https://www.apache.org/dyn/closer.cgi?path=/kafka/2.3.0/kafka_2.12-2.3.0.tgz 2、解压 1 tar xzvf kafka_2.12.3.0.tgz 2 cd kafka_2.12.3.0 二、启动服务 kafka依赖zookeeper,如果本身没有已经启动的zookeeper集群的话,kafka的安装包中已经内置了一个脚本来启动一个单节点的zookeeper实例,我的机器没有zookeeper,所以需要先启动一个zookeeper实例,启动命令: bin/zookeeper-server-start. sh -daemon config/zookeeper.properties 然后启动kafka,启动命令: bin/kafka-server-start. sh -daemon config/server.properties 执行过命令后发现启动失败了,看日志发现没有Java命令,才想起来自己的电脑没有安装Java,于是安装下Java,centos的系统,安装命令: yum install java- 1.8 . 0 -openjdk 三

聊聊rocketmq的updateTopicRouteInfoFromNameServer

二次信任 提交于 2019-12-04 02:12:34
序 本文主要研究一下rocketmq的updateTopicRouteInfoFromNameServer updateTopicRouteInfoFromNameServer rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/impl/factory/MQClientInstance.java public class MQClientInstance { private final static long LOCK_TIMEOUT_MILLIS = 3000; private final InternalLogger log = ClientLogger.getLog(); private final ClientConfig clientConfig; private final int instanceIndex; private final String clientId; private final long bootTimestamp = System.currentTimeMillis(); private final ConcurrentMap<String/* group */, MQProducerInner> producerTable = new ConcurrentHashMap

聊聊rocketmq的updateTopicRouteInfoFromNameServer

ε祈祈猫儿з 提交于 2019-12-04 01:45:41
序 本文主要研究一下rocketmq的updateTopicRouteInfoFromNameServer updateTopicRouteInfoFromNameServer rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/impl/factory/MQClientInstance.java public class MQClientInstance { private final static long LOCK_TIMEOUT_MILLIS = 3000; private final InternalLogger log = ClientLogger.getLog(); private final ClientConfig clientConfig; private final int instanceIndex; private final String clientId; private final long bootTimestamp = System.currentTimeMillis(); private final ConcurrentMap<String/* group */, MQProducerInner> producerTable = new ConcurrentHashMap

NSQ

我只是一个虾纸丫 提交于 2019-12-04 00:54:14
NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ。 NSQ NSQ介绍 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异。 NSQ的优势有以下优势: NSQ提倡分布式和分散的拓扑,没有单点故障,支持容错和高可用性,并提供可靠的消息交付保证 NSQ支持横向扩展,没有任何集中式代理。 NSQ易于配置和部署,并且内置了管理界面。 NSQ的应用场景 通常来说,消息队列都适用以下场景。 异步处理 参照下图利用消息队列把业务流程中的非关键流程异步化,从而显著降低业务请求的响应时间。nsq应用场景1 应用解耦 通过使用消息队列将不同的业务逻辑解耦,降低系统间的耦合,提高系统的健壮性。后续有其他业务要使用订单数据可直接订阅消息队列,提高系统的灵活性。nsq应用场景1 流量削峰 类似秒杀(大秒)等场景下,某一时间可能会产生大量的请求,使用消息队列能够为后端处理请求提供一定的缓冲区,保证后端服务的稳定性。nsq应用场景1 安装 官方下载页面根据自己的平台下载并解压即可。 NSQ组件 nsqd nsqd是一个守护进程,它接收、排队并向客户端发送消息。 启动nsqd,指定-broadcast-address=127.0.0.1来配置广播地址 ./nsqd -broadcast-address=127.0.0.1

Kafka设计解析(二):Kafka High Availability (上)

江枫思渺然 提交于 2019-12-04 00:42:43
Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则宕机期间其上所有Partition都无法继续提供服务。若该Broker永远不能再恢 复,亦或磁盘故障,则其上数据将丢失。而Kafka的设计目标之一即是提供数据持久化,同时对于分布式系统来说,尤其当集群规模上升到一定程度后,一台或 者多台机器宕机的可能性大大提高,对Failover要求非常高。因此,Kafka从0.8开始提供High Availability机制。本文从Data Replication和Leader Election两方面介绍了Kafka的HA机制。 Kafka为何需要High Available 为何需要Replication 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Broker宕机,则其上所有的Partition数据都不可被消 费,这与Kafka数据持久性及Delivery Guarantee的设计目标相悖。同时Producer都不能再将数据存于这些Partition中。 如果Producer使用同步模式则Producer会在尝试重新发送 message.send.max.retries (默认值为3)次后抛出Exception,用户可以选择停止发送后续数据也可选择继续选择发送。而前者会造成数据的阻塞

深入理解Kafka必知必会(上)

这一生的挚爱 提交于 2019-12-03 23:48:24
Kafka的用途有哪些?使用场景如何? 消息系统: Kafka 和传统的消息系统(也称作消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。与此同时,Kafka 还提供了大多数消息系统难以实现的消息顺序性保障及回溯消费的功能。 存储系统: Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于 Kafka 的消息持久化功能和多副本机制,我们可以把 Kafka 作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可。 流式处理平台: Kafka 不仅为每个流行的流式处理框架提供了可靠的数据来源,还提供了一个完整的流式处理类库,比如窗口、连接、变换和聚合等各类操作。 Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么 分区中的所有副本统称为 AR(Assigned Replicas)。所有与 leader 副本保持一定程度同步的副本(包括 leader 副本在内)组成ISR(In-Sync Replicas),ISR 集合是 AR 集合中的一个子集。 ISR的伸缩: leader 副本负责维护和跟踪 ISR 集合中所有 follower 副本的滞后状态,当 follower 副本落后太多或失效时,leader 副本会把它从 ISR 集合中剔除。如果

springBoot--集成RocketMQ

你。 提交于 2019-12-03 23:45:30
1、导入依赖 <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>spring-boot-starter-rocketmq</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> <!-- rocketmq dependencies --> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>4.4.0</version> </dependency> 2、配置生产者 package com.example.demo.mq; import org.apache.rocketmq.client.exception.MQClientException; import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.springframework.stereotype.Component; @Component public class MyProducer { /** * 生产组,生产者必须在生产组内 */

kafka-clients 1.0 高阶API消费消息(未完)

孤人 提交于 2019-12-03 21:21:31
消费消息的请求(按序) org/apache/kafka/common/requests/RequestHeader org/apache/kafka/common/requests/ApiVersionsRequest org/apache/kafka/common/requests/MetadataRequest 批量查询topic的元数据信息 org/apache/kafka/common/requests/FindCoordinatorRequest 从拿到的topic的元数据中取出leader节点 作为组协调者 org/apache/kafka/common/requests/JoinGroupRequest org/apache/kafka/common/requests/SyncGroupRequest org/apache/kafka/common/requests/OffsetFetchRequest org/apache/kafka/common/requests/ListOffsetRequest org/apache/kafka/common/requests/FetchRequest org/apache/kafka/common/requests/HeartbeatRequest 请求接口文档参考 响应接口文档参考 RequestHeader 请求头

RocketMQ实战:生产环境中,autoCreateTopicEnable为什么不能设置为true

最后都变了- 提交于 2019-12-03 21:18:47
1、现象 很多网友会问,为什么明明集群中有多台Broker服务器,autoCreateTopicEnable设置为true,表示开启Topic自动创建,但新创建的Topic的路由信息只包含在其中一台Broker服务器上,这是为什么呢? 期望值:为了消息发送的高可用,希望新创建的Topic在集群中的每台Broker上创建对应的队列,避免Broker的单节点故障。 现象截图如下: 正如上图所示,自动创建的topicTest5的路由信息: topicTest5只在broker-a服务器上创建了队列,并没有在broker-b服务器创建队列,不符合期望。 默认读写队列的个数为4。 我们再来看一下RocketMQ默认topic的路由信息截图如下: 从图中可以默认Topic的路由信息为broker-a、broker-b上各8个队列。 2、思考 默认Topic的路由信息是如何创建的? Topic的路由信息是存储在哪里?Nameserver?broker? RocketMQ Topic默认队列个数是多少呢? 3、原理 3.1 RocketMQ基本路由规则 Broker在启动时向Nameserver注册存储在该服务器上的路由信息,并每隔30s向Nameserver发送心跳包,并更新路由信息。 Nameserver每隔10s扫描路由表,如果检测到Broker服务宕机,则移除对应的路由信息。