topic

kafka linux下安装及学习

这一生的挚爱 提交于 2020-02-29 17:42:13
错误一 Java HotSpot ( TM ) 64 - Bit Server VM warning : INFO : os : : commit_memory ( 0x00000000e0000000 , 536870912 , 0 ) failed ; error = 'Cannot allocate memory' ( errno = 12 ) 主要是kafka的kafka-server-start.sh文件配置有问题.也可以说跟安装kafka的服务器有关系。简单点说,就是你的服务器配置有点低。 然后进入kafka_2.12-0.11.0.0的bin目录,找到kafka-server-start.sh文件,vi kafka-server-start.sh 找到这一行export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" 改为 export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M" Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000e0000000, 536870912, 0) failed; error='Cannot allocate memory' (errno=12) kafka 启动命令 首先启动zookeeper

大数据学习day34---spark14------1 redis的事务(pipeline)测试 ,2. 利用redis的pipeline实现数据统计的exactlyonce ,3 SparkStreaming中数据写入Hbase实现ExactlyOnce

☆樱花仙子☆ 提交于 2020-02-29 17:28:40
1 redis的事务(pipeline)测试   Redis本身对数据进行操作,单条命令是原子性的,但事务不保证原子性,且没有回滚。事务中任何命令执行失败,其余的命令仍会被执行,将Redis的多个操作放到一起执行,要成功多成功,如果失败了,可以把整个操作放弃,可以实现类似事物的功能。redis事务包含三个阶段:开始事务,命令入队,执行事务。redis的分片副本集集群不支持pipeline,redis只支持单机版的事务(pipeline),Redis的主从复制也支持pipeline(目前一些公司就是这样干的)。若是想用集群,可以使用MongoDB, MongoDB集群支持事物,是一个NoSQL文档数据库,支持存储海量数据、安全、可扩容。 RedisPipelineTest package com._51doit.spark14 import com._51doit.utils.JedisConnectionPool import redis.clients.jedis.{Jedis, Pipeline} object RedisPipeLineTest { def main(args: Array[String]): Unit = { val jedis: Jedis = JedisConnectionPool.getConnection jedis.select(1) //

springcloud微服务实战_09_消息驱动

家住魔仙堡 提交于 2020-02-29 15:10:36
9.1 spring cloud stream 简介 spring cloud stream 是一个用来为微服务应用提供消息驱动能力的框架. 它可以基于 springboot 来单独的创建独立的,可用于生产的 spring 的应用程序. 它通过使用 spring integration 来连接消息代理中间件以实现消息事件驱动. 它为一些一些供应商的消息中间件产品提供了个性化的自动化配置,并且引入了发布-订阅,消费组以及分区这三个核心概念. 快速入门 下面我们通过构建一个简单的示例来对Spring Cloud Stream有一个初步认识。该示例主要目标是构建一个基于Spring Boot的微服务应用,这个微服务应用将通过使用消息中间件RabbitMQ来接收消息并将消息打印到日志中。所以,在进行下面步骤之前请先确认已经在本地安装了RabbitMQ 构建一个Spring Cloud Stream消费者 创建一个基础的Spring Boot工程,命名为:stream-hello 编辑 build.gradle 中的依赖关系,引入Spring Cloud Stream对RabbitMQ的支持,具体如下: dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation

解决默认的__consumer_offsets这个topic默认副本数为1而存在的单点故障问题

强颜欢笑 提交于 2020-02-29 12:40:19
解决kafka集群由于默认的__consumer_offsets这个topic的默认的副本数为1而存在的单点故障问题 抛出问题: __consumer_offsets这个topic是由kafka自动创建的,默认50个,但是都存在一台kafka服务器上,这是不是就存在很明显的单点故障? 经测试,如果将存储consumer_offsets的这台机器kill掉,所有的消费者都停止消费了。请问这个问题是怎么解决的呢? 原因分析: 由于__consumer_offsets这个用于存储offset的分区是由kafka服务器默认自动创建的,那么它在创建该分区的时候,分区数和副本数的依据是什么? 分区数是固定的50,这个没什么可怀疑的,副本数呢?应该是一个默认值1,依据是,如果我们没有在server.properties文件中指定topic分区的副本数的话,它的默认值就是1。 __consumer_offsets是一个非常重要的topic,我们怎么能允许它只有一个副本呢?这样就存在单点故障,也就是如果该分区所在的集群宕机了的话, 我们的消费者就无法正常消费数据了。 我在笔记本上搭建了kafka集群,共3个Broker,来解决这个问题。下面是一些记录。 说明:如果你的__consumer_offsets这个topic已经被创建了,而且只存在一台broker上

阅读spring源码

試著忘記壹切 提交于 2020-02-29 03:13:22
读Spring源码之前,你要先清楚,为什么你要用Spring... Spring最基本的功能是做为管理bean的容器,所以我以为应该先从org.springframework.context包了解咯,包括org.springframework.web.context; 然后是org.springframework.beans org.springframework.aop 你看那个从core开始看就可以了 从ApplicationContext Spring中文手册是必须的~~ 1.阅读源码的入口在哪里? 2.入门前必备知识了解:IOC和AOP 一、我们从哪里开始 1.准备工作:在官网上下载了Spring源代码之后,导入Eclipse,以方便查询。 2.打开我们使用Spring的项目工程,找到Web.xml这个网站系统配置文件,在其中找到Spring的初始化信息: [html] view plain copy < listener > < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class > </ listener > 由配置信息可知,我们开始的入口就这里ContextLoaderListener这个监听器。 在源代码中我们找到了这个类,它的定义是:

Kafka原理及Kafka群集部署

五迷三道 提交于 2020-02-29 00:48:27
博文大纲: 一、Kafka概述 1)消息队列 2)为什么要使用消息队列? 3)什么是Kafka? 4)Kafka的特性 5)Kafka架构 6)Topic和Partition的区别 7)kafka流程图 8)Kafka的文件存储机制 9)数据的可靠性和持久性保证 10)leader选举 二、部署单机Kafka 1)部署Kafka 2)测试Kafka 三、部署Kafka群集 1)环境准备 2)部署zookeeper群集 3)部署Kafka群集 一、Kafka概述 1)消息队列 1)点对点模式 (一对一,消费者主动拉取数据,消息收到后消息清除) 点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消息推送到客户端。这个模型的特点是发送到队列的消息被一个且只有一个接收者接收处理,即使有多个消息监听者也是如此; 2)发布/订阅模式 (一对多,数据生产后,推送给所有订阅者) 发布订阅模型则是一个基于推送的消息传送模型。发布订阅模型可以有多种不同的订阅者,临时订阅者只在主动监听主题时才接收消息,而持久订阅者则监听主题的所有消息,即使当前订阅者不可用,处于离线状态。 2)为什么要使用消息队列? 1)解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 2)冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险

rocketmq 消息队列的顺序性问题

纵然是瞬间 提交于 2020-02-28 21:29:46
为了实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。我们很多时候都会考虑将消息系统纳入我们的选择中;比如我一个登录事件,有可能我登录之后需要做很多东西,比如日志,比如发布消息,比如推送,再比如发送代金券等等;这些事件与登录息息相关,但是本质上它们与登录这个事件没有直接的关系,只是在登录事件后,系统按照需求需要去初始化一些东西,或者去记录一些东西等等;如果把所有的东西都纳入到登录这个事件中(同一个事物中),那登录的事件内处理的逻辑更多,会造成什么后果?登录时间很长,让用户无法忍受,另外,假如登录过程中出现了未发现异常,那是不是导致用户直接无法登录?为了解决这样的问题,我们引入了消息系统,比如我这台机登录过后,我将登录的一些信息,通过远程方式发送到另外一台机器上(或者同一台机),让它们去处理相应的后续逻辑实现; 目的是:1、用户登录更快,体验上更好, 2、只要保证登录部分完整,即便后续出错,并不影响用户正常使用,即容错性更强! 谈到消息系统,首先想到的第一个问题肯定会是: 消息的顺序性 本来很想说一下关于消息顺序性的一些问题,不过由于我也是借鉴了一些其他的帖子,以及官方的文档,所以这里就不会去赘述这些了,稍后我会分享一些很不错的链接,留给自己以后看,也希望可以给一些刚好要入门rocketmq的网友提供一些资料; rocketmq是阿里云的一套开源产品

RabbitMQ入门

你。 提交于 2020-02-28 18:47:58
文章目录 一、rabbitMQ简介 各大主流中间件对比: 初识RabbitMQ RabbitMQ高性能的原因? 什么是AMQP高级消息队列协议? AMQP核心概念(重点) 二、rabbitMQ安装及使用(两种) Centos安装方式 Docker安装方式 常用操作命令 三、rabbitMQ快速入门 四、交换机 直流交换机 主题交换机 输出交换机 一、rabbitMQ简介 各大主流中间件对比: ActiveMQ ActiveMQ 是 Apache 出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持 J M S 规范的消息中间件。 其丰富的 API 、多种集群构建模式使得他成为业界老牌消息中间件,在中小型企业中应用广泛! MQ 衡量指标:服务性能、数据存储、集群架构 Kafka 用来做日志分析的 RocketMQ RocketMQ是阿里开源的消息中间件,目前也已经孵化为Apache顶级项目,它是纯java开发,具有高吞吐量、高可用性、适合大规模分布式系统 应用的特点。 RocketMQ思路起源于Kafka,它对消息的可靠传输及事务 性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推 送、日志流式处理、binglog分发等场景 RabbitMQ RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议 来实现。 AMQP的主要特征是面向消息

5分钟带你体验一把 Kafka

余生颓废 提交于 2020-02-28 16:10:10
说在文章前面的话: 前置条件:你的电脑已经安装 Docker 主要内容: 使用 Docker 安装 使用命令行测试消息队列的功能 zookeeper和kafka可视化管理工具 Java 程序中简单使用Kafka 使用 Docker 安装搭建Kafka环境 单机版 下面使用的单机版的Kafka 来作为演示,推荐先搭建单机版的Kafka来学习。 以下使用 Docker 搭建Kafka基本环境来自开源项目:github.com/simplesteph… 。当然,你也可以按照官方提供的来:github.com/wurstmeiste… 。 新建一个名为 zk-single-kafka-single.yml 的文件,文件内容如下: version: '2.1' services: zoo1: image: zookeeper:3.4.9 hostname: zoo1 ports: - "2181:2181" environment: ZOO_MY_ID: 1 ZOO_PORT: 2181 ZOO_SERVERS: server.1=zoo1:2888:3888 volumes: - ./zk-single-kafka-single/zoo1/data:/data - ./zk-single-kafka-single/zoo1/datalog:/datalog kafka1: image:

Kafka设计解析(四):Kafka Consumer解析

送分小仙女□ 提交于 2020-02-28 16:00:22
High Level Consumer 很多时候,客户程序只是希望从Kafka读取数据,不太关心消息offset的处理。同时也希望提供一些语义,例如同一条消息只被某一个Consumer消费(单播)或被所有Consumer消费(广播)。因此,Kafka High Level Consumer提供了一个从Kafka消费数据的高层抽象,从而屏蔽掉其中的细节并提供丰富的语义。 Consumer Group High Level Consumer将从某个Partition读取的最后一条消息的offset存于ZooKeeper中( Kafka从0.8.2版本 开始同时支持将offset存于Zookeeper中与 将offset存于专用的Kafka Topic中 )。这个offset基于客户程序提供给Kafka的名字来保存,这个名字被称为Consumer Group。Consumer Group是整个Kafka集群全局的,而非某个Topic的。每一个High Level Consumer实例都属于一个Consumer Group,若不指定则属于默认的Group。ZooKeeper中Consumer相关节点如下图所示: 很多传统的Message Queue都会在消息被消费完后将消息删除,一方面避免重复消费,另一方面可以保证Queue的长度比较短,提高效率。而如上文所述