topic

RocketMQ在windows上安装和开发使用

南笙酒味 提交于 2019-12-18 21:46:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 概述 RocketMQ是alibaba公司开源的一个纯java的开源消息中间件。 开发测试环境搭建 1. 安装&启动 进入到RocketMQ下载包解压的路径下 D:\machine\RocketMQ-3.0.8\RocketMQ-3.0.8> 接下来安装 执行下边的命令或者执行install.bat(在这个bat文件中的命令如下)对maven熟悉的一眼就知道是执行clean package install assembly等操作。 mvn -Dmaven.test.skip=true clean packageinstall assembly:assembly –U 操作信息如下: [INFO] Scanning for projects... [INFO] ------------------------------------------------------------------------ [INFO] Reactor Build Order: [INFO] [INFO] rocketmq-all 3.0.8 [INFO] rocketmq-remoting 3.0.8 [INFO] rocketmq-common 3.0.8 [INFO] rocketmq-client 3.0.8 [INFO]

Apache Kafka 概览

时光总嘲笑我的痴心妄想 提交于 2019-12-18 20:45:25
简介 Apache Kakfa 是一个分布式流处理平台,既可以当做普通的消息中间件用于消息发布订阅,也可以存储并处理流式数据,其分布式设计使得其有较好的容错性,水平拓展性等。 通常可以用于当做消息订阅发布用于业务系统中,或者用于大数据方向,接受存储大量的流式数据并和对应的大数据处理框架结合使用,eg. Kafka + Samza 从物理部署层面来讲,其主要有如下几个模块: ZooKeeper 用于元数据保存以及事件通知 Broker Kafka 的核心部分,用 scala 实现,负责处理客户端请求,持久化消息数据等 Client(Consumer & Producer) 客户端,Java 实现。生产者消费者实现 下面分别从这几个模块来讲解 Kafka 相关的实现[ 基于 Kafka 2.4 ]。 相关概念 Broker Consumer Producer Controller GroupCoordinator TransactionCoordinator Topic Partition Replicas ZooKeeper Apache ZooKeeper 在 Kafka 的作用中类似于元数据的存储以及元数据改变的的一个通知器的作用。看清楚其内部存储了哪些数据就可以知道其具体的一个作用。存储的主要数据如下 集群相关元数据 /cluster/id { "version" : 4 ,

如何删除未推送的git commit?

夙愿已清 提交于 2019-12-18 15:27:02
我不小心犯了错误的分支。 如何删除该提交? #1楼 删除最近的提交,并保留已完成的工作: git reset --soft HEAD~1 删除最近的提交, 破坏 您已完成的工作: git reset --hard HEAD~1 #2楼 进行 git rebase -i FAR_ENOUGH_BACK 并删除不需要的提交行。 #3楼 如果要将该提交移至另一个分支,请获取有问题的提交的SHA git rev-parse HEAD 然后切换当前分支 git checkout other-branch 然后 cherry-pick other-branch git cherry-pick <sha-of-the-commit> #4楼 不要删除它:仅执行一次 git cherry-pick 就足够了。 但是,如果您在错误的分支上进行了 几次 提交,那么 git rebase --onto : 假设您有: x--x--x--x <-- master \ -y--y--m--m <- y branch, with commits which should have been on master ,然后可以标记 master 并将其移动到您想要的位置: git checkout master git branch tmp git checkout y git branch -f master x

spring boot整合websocket

送分小仙女□ 提交于 2019-12-18 13:32:22
转载自: https://www.cnblogs.com/GoodHelper/p/7078381.html 一.WebSocket简单介绍   随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了。近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信,扩展了浏览器与服务端的通信功能,使服务端也能主动向客户端发送数据。   我们知道,传统的HTTP协议是无状态的,每次请求(request)都要由客户端(如 浏览器)主动发起,服务端进行处理后返回response结果,而服务端很难主动向客户端发送数据;这种客户端是主动方,服务端是被动方的传统Web模式 对于信息变化不频繁的Web应用来说造成的麻烦较小,而对于涉及实时信息的Web应用却带来了很大的不便,如带有即时通信、实时数据、订阅推送等功能的应 用。在WebSocket规范提出之前,开发人员若要实现这些实时性较强的功能,经常会使用折衷的解决方法: 轮询(polling) 和 Comet 技术。其实后者本质上也是一种轮询,只不过有所改进。   轮询 是最原始的实现实时Web应用的解决方案。轮询技术要求客户端以设定的时间间隔周期性地向服务端发送请求,频繁地查询是否有新的数据改动。明显地,这种方法会导致过多不必要的请求,浪费流量和服务器资源。   Comet技术 又可以分为

JMS(Java Message Service)

五迷三道 提交于 2019-12-18 11:51:48
是什么 JMS是Java EE中的一部分,好比是盘子和点心的关系,JMS是Java EE中的额一个组成部分。 JMS的组成 JMS有四部分组成。分别为: JMS privider: 实现JMS接口与规范的消息中间件,也就是我们的MQ服务器。 JMS producer:消息生产者,创建与发送JMS消息的客户端应用。 JMS consumer:消息的消费者,接受与处理JMS消息的客户端应用。 JMS message:JMS的消息。 JMS message的组成 JMS message由三部分组成:消息头、消息头和消息属性。 消息头 在JMS message中包含很多消息头,如下所示: 几个比较重要的消息头如下: 1、 JMSdestination :message发送的目的地,比如queue和topic。 2、 JMSDeliveryMode :主要是指定消息的持久或者非持久化。 3、JMSExpiration:消息存活时间。 4、JMSPriority:消息优先级。 5、JMSMessageID:唯一识别每个消息的标志,由MQ产生。 消息体 消息体顾名思义作用就是 封装具体消息的数据 。 那么消息的数据到底有多少种格式呢,有五种。其中最常用的为 TextMessage 和 MapMessage 两种。 1、TextMessage:普通的字符串消息,包含一个string。 2

Kafka Eagle 源码解读

↘锁芯ラ 提交于 2019-12-18 11:12:57
1.概述   在《 Kafka 消息监控 - Kafka Eagle 》一文中,简单的介绍了 Kafka Eagle这款监控工具的作用,截图预览,以及使用详情。今天笔者通过其源码来解读实现细节。目前该项目已托管于 Github 之上,作者编写了使用手册,告知使用者如何安装,部署,启动该系统。但对于实现的细节并未在参考手册中详细指出。这里,笔者通过本篇博文,来详细解读其实现细节。相关资料文献地址如下所示: Kafka Eagle 源码地址 Kafka Eagle 参考手册 Kafka Eagle 安装包 2.内容   截止到版本 Kafka Eagle v1.1.1 支持监控0.8.2.x(存放消费信息于Zookeeper)以及 0.10.x(存放消费信息于Kafka的topic中)。对于前者,从Zookeeper中获取消息信息,难度不大,编写Zookeeper客户端实现代码即可,该版本在Zookeeper下的存储结构树如下图所示: 对于实现细节,可使用ZkUtils工具类来获取相关数据,以获取消费信息为例,代码如下所示: /** Obtaining kafka consumer information from zookeeper. */ public Map<String, List<String>> getConsumers(String clusterAlias) {

设计模式(三):观察者模式与发布/订阅模式区别

落花浮王杯 提交于 2019-12-18 10:01:50
在翻阅资料的时候,有人把观察者(Observer)模式等同于发布(Publish)/订阅(Subscribe)模式,也有人认为这两种模式还是存在差异,而我认为确实是存在差异的,本质上的区别是调度的地方不同。 观察者模式 比较概念的解释是,目标和观察者是基类,目标提供维护观察者的一系列方法,观察者提供更新接口。具体观察者和具体目标继承各自的基类,然后具体观察者把自己注册到具体目标里,在具体目标发生变化时候,调度观察者的更新方法。 比如有个“天气中心”的具体目标A,专门监听天气变化,而有个显示天气的界面的观察者B,B就把自己注册到A里,当A触发天气变化,就调度B的更新方法,并带上自己的上下文。 发布/订阅模式 比较概念的解释是,订阅者把自己想订阅的事件注册到调度中心,当该事件触发时候,发布者发布该事件到调度中心(顺带上下文),由调度中心统一调度订阅者注册到调度中心的处理代码。 比如有个界面是实时显示天气,它就订阅天气事件(注册到调度中心,包括处理程序),当天气变化时(定时获取数据),就作为发布者发布天气信息到调度中心,调度中心就调度订阅者的天气处理程序。 总结 1. 从两张图片可以看到,最大的区别是调度的地方。 虽然两种模式都存在订阅者和发布者(具体观察者可认为是订阅者、具体目标可认为是发布者),但是观察者模式是由具体目标调度的,而发布/订阅模式是统一由调度中心调的

Kafka相关问题汇总

感情迁移 提交于 2019-12-18 05:24:30
关于修改topic默认副本数及分区迁移(以__consumer_offsets为例): 关于__consumer_offsets topic 与磁盘和内存相比,其实Kafka对计算处理能力的要求是相对较低的,不过它在一定程度上还是会影响整体的性能。其中比较耗cpu的是客户端为了优化网络和磁盘空间,会对消息进行压缩。服务器需要对消息进行批量解压,设置偏移量,然后重新进行批量压缩,再保存到磁盘上。 而由于Zookeeper并不适合大批量的频繁写入操作,0.10版本之后的Kafka已将所有消费组各consumer提交的位移Offset信息保存在Kafka内部的topic中,即__consumer_offsets ,且这个topic是由kafka自动创建的,默认50个,但是都存在一台kafka服务器上(ps:作者这边有多个kafka集群,观察发现有些kafka集群上的__consumer_offsets分区是均匀分布的,有些则都分布在某一台broker上) __consumer_offsets中的消息保存了每个consumer group某一时刻提交的offset信息。格式大概如下: 同时 [ root@test-kafka-01 kafka ] # source /etc/profile && ${PWD}/bin/kafka-topics.sh --describe -

kafka使用指南

≯℡__Kan透↙ 提交于 2019-12-17 21:42:34
快速开始 本教程假设您刚刚开始,并且没有现有的Kafka或ZooKeeper数据。由于Kafka控制台脚本对于基于Unix和Windows的平台是不同的,因此在Windows平台上使用bin\windows\而不是bin/将脚本扩展名更改为.bat。 第1步:下载代码 下载 2.0.0版本并解压缩它。 1 2 tar -xzf kafka_2.11-2.0.0.tgz cd kafka_2.11-2.0.0 第2步:启动服务器 Kafka使用ZooKeeper,因此如果您还没有ZooKeeper服务器,则需要先启动它。您可以使用与kafka一起打包的便捷脚本来获取快速且脏的单节点ZooKeeper实例。 1 2 3 bin/zookeeper-server-start.sh config/zookeeper.properties [2013-04-22 15:01:37,495] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig) ... 现在启动Kafka服务器: 1 2 3 4 bin/kafka-server-start.sh config/server.properties [2013-04-22

kafka \"HelloWorld\"实践

若如初见. 提交于 2019-12-17 15:23:27
  前面我们分别介绍了kafka的相关基本原理,kafka的集群服务器搭建以及kafka相关的配置,本文综合前面的理论知识,运用kafka Java API实现一个简单的客户端Demo。 开发环境 操作系统:MacOS 10.12.3 开发平台:Eclipse Neon.2 Release (4.6.2) JDK: java version 1.8.0_121 zookeeper: zookeeper-3.4.9 kafka: kafka-2.10-0.10.2.0 项目的建立与实现   首先为大家展示一下项目最终的结构图,如下:   下面开始建立项目: 首先建立一个基本的Maven Java Project 项目框架,项目名称为 kafkaDemo,建立项目流程参考: maven 基本框架搭建 ; 然后修改pom.xml文件内容,为项目引入kafka 客户端jar包: <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.10.2.0</version> </dependency>   添加完成后保存pom.xml,然后maven update project。当update完成后,maven依赖包里的jar包应该如上图所示。