聚合文章列表
17 浏览

介绍一位分布式流处理新贵:Kafka Stream

本文介绍了KafkaStream的背景,如KafkaStream是什么,什么是流式计算,以及为什么要有KafkaStream。接着介绍了KafkaStream的整体架构,并行模型,状态存储,以及主要的两种数据集KStream和KTable。并且分析了KafkaStream如何解决流式系统中的关键问题,如时间定义,窗口操作,Join操作,聚合操作,以及如何处理乱序和提供容错能力。最后结合示例讲解了如何使用KafkaStream。KafkaStream背景1.KafkaStream是什么KafkaStream是ApacheKafka从0.10版本引入的一个新Feature。它是提供了对存储于Kafka内的数据进行流式处理和分析的功能。KafkaStream的特点如下:KafkaStream提供了一个非常简单而轻量的Library,它可以非常方便地嵌入任意Java应用中,也可以任意方式打包和部署除了Kafka外,无任何外部依赖充分利用Kafka分区机制实现水平扩展和顺序性保证通过可容错的statest

消息系统 2017-10-10 发布
12 浏览

Python操作rabbitmq系列(三):多个接收端消费消息

接着上一章。这一章,我们要将同一个消息发给多个客户端。这就是发布订阅模式。直接看代码:发送端:importpikaimportsysconnection=pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))channel=connection.channel()#原则上,消息,只能有交换机传到队列。就像我们家里面的交换机道理一样。#有多个设备连接到交换机,那么,这个交换机把消息发给那个设备呢,就是根据#交换机的类型来定。类型有:direct\topic\headers\fanout#fanout:这个就是,所有的设备都能收到消息,就是广播。#此处定义一个名称为'logs'的'fanout'类型的exchangechannel.exchange_declare(exchange='logs',exchange_type='fanout')#将消息发送到名为log的exchange中#

消息系统 2017-10-10 发布
11 浏览

Python操作rabbitmq系列(四):根据类型订阅消息

在上一章中,所有的接收端获取的所有的消息。这一章,我们将讨论,一些消息,仍然发送给所有接收端。其中,某个接收端,只对其中某些消息感兴趣,它只想接收这一部分消息。如下图:C1,只对error感兴趣,C2对其他三种甚至对所有都感兴趣,我们该怎么搞呢?发送端:importpikaimportsysconnection=pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))channel=connection.channel()#创建一个交换机:direct_logs类型是:directchannel.exchange_declare(exchange='direct_logs',exchange_type='direct')severity=sys.argv[1]iflen(sys.argv)>1else'info'message=''.join(sys.argv[2:])or'H

消息系统 2017-10-10 发布
AD 友情赞助
14 浏览

【框架学习与探究之消息队列--EasyNetQ(1)】

前言本文欢迎转载,实属原创,本文原始链接地址:http://www.cnblogs.com/DjlNet/p/7603554.html废话既然都是废话了,所以大家就可以跳过了,这里是博主有事没事儿的一点瞎说哈,国庆节+中秋节一共8天,有些人回家了,有些人堵在路上了,有些人可能还要加班或者值班,233333,博主这里还好是没有加班一般也不需要值班,可能偶尔需要的时候远程瞅瞅就行。相信很多小伙伴,在放假前夕都做好了要去哪里玩,要去哪里吃,要怎么过好节假日,当然也有要看书的,有假期学习计划,有锻炼身体的,说说自己吧,博主算是综合性了,餐了聚了、黑也开了、电影也看了、书还没看、计划学习搁置+延期了、身体也没啥锻炼、剧倒是跟进了一些,看到这里是不是觉得博主的生活是不是冥冥之中在哪里见过,对,是的,多多少少许多人都“中招”了(当然了每个人有自己的理解和生活方式,没有人可以批判谁对谁错,所以,没有对错,只有利弊!!!),说着说着博主放下了手中的“屠刀”,陷入了思考,想着不远千里啊,为了啥,还不还是为了未来,正当博主思考之际,电话响了起来,外卖:帅

消息系统 2017-10-11 发布
15 浏览

一个高性能、轻量级的分布式内存队列系统--beanstalk

Beanstalk是一个高性能、轻量级的、分布式的、内存型的消息队列系统。最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟。其实Beanstalkd是典型的类Memcached设计,协议和使用方式都是同样的风格。其基本设计思想很简单:高性能离不开异步,异步离不开队列,而内部都是生产者-消费者模式的。背景介绍:现在市面上有很多消息队列系统了。常用的有ActiveMQ,RabbitMQ,ZeroMA,Kafka,RocketMQ。Redis之父最近又开源了一个Disque。我之前在乐视用的是apache的qpid。但是之所以各个系统都在流行,还要看其侧重点。其中ActiveMQ可以称之为传统型,它们完全支持JMS和AMQP规范。JMS即Java消息服务(JavaMessageService)应用程序接口。它是Java平台上有关面向消息中间件(MessageOrientedMiddleware,缩写为MOM)的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送

消息系统 2017-10-11 发布
20 浏览

Storm 与 Kafka 的整合之二:Kafka

Kafkaisadistributed,partitioned,replicatedcommitlogservice.Itprovidesthefunctionalityofamessagingsystem,butwithauniquedesign.--Officialwebsite为什么要有Kafka?分布式具备经济、快速、可靠、易扩充、数据共享、设备共享、通讯方便、灵活等分布式所具备的特性高吞吐量同时为发布者和订阅者提高吞吐量高可靠性支持多个订阅者,当订阅失败的时候,能够自动均衡订阅者离线&实时性能将消息持久化,进行批量处理Kafka工作机制一些主要概念Topic(主题)Atopicisacategoryorfeednametowhichmessagesarepublished.Producers(发布者)Producerspublishdatatothetopicsoftheirchoice.Thepro

消息系统 2017-10-11 发布
AD 友情赞助
19 浏览

“[译] Kafka 存储的工作机制"

翻译自Kafka/Confluent公司的工程师TravisJeffery的文章:HowKafka’sStorageInternalsWork。通过本文我会帮助你理解Kafka是如何存储它的数据的。对于调优Kafka的性能以及了解broker配置实际是干什么的,了解Kafka的存储很有用。我受Kafka的简单性的启发,用我所学开始实现一个Go的Kafka:(jocko)[https://github.com/travisjeffery/jocko]。那么,Kafka存储内部是如何工作的呢?Kafka的存储单元是分区分区(partition)是有序的,新的不可变的消息增加到尾部。一个分区不能扩多个boker,甚至不能跨多个磁盘。保留策略管理kakfa如何保留消息你可以指定保留多少数据和多久的数据(大小和时间策略),之后kakfa会按照顺序清理数据,不管数据是否已经倍消费。分区被分割成多个分段所以Kafka会定期地查找磁盘中需要清理的消息。如果一个分区单一的文件比较打,操作会很

消息系统 2017-10-12 发布
15 浏览

Message Queuing(MSMQ)

一、前言MicroSoftMessageQueuing(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任一位置。它的实现原理是:消息的发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(MessageQueue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。二、实质在消息传递机制中,有两个比较重要的概念。一个是消息,一个是队列。消息是由通信的双方所需要传递的信息,它可以是各式各样的媒体,如文本、声音、图象等等。消息最终的理解方式,为消息传递的双方事先商定,这样做的好处是,一是相当于对数据进行了简单的加密,二则采用自己定义的格式可以节省通信的传递量。消息可以含有发送和接收者的标识,这样只有指定的用户才能看到只传递给他的信息和返回是否操作成功的回执。消息也可以含有时间戳,以便于接收方对某些与时间相关的应用进行处理。消息还可以含有到期时间,它表明如

消息系统 2017-10-12 发布
15 浏览

探索skynet(五):随笔

最近准备在组内做一个有关skynet的分享,所以对skynet产生了一些“形而上”的思考。这篇文章将不涉及具体的代码细节,就是就着skynet这个框架“扯扯淡”,随便写写。skynet的核心是什么skynet从Erlang借鉴而来,主要借鉴它的Actor模型,用以充分利用多核实现并行计算。所以skynet可以说是一个C语言+lua语言实现的Actor模型框架。skynet中的每一个Actor,原则上,都是一个so库。每个Actor,对应于一个自己的消息队列。所有消息队列又串成了一个消息队列的大队列。多个工作线程,不断的从大队列中拿出消息队列,取出消息,找到对应的Actor(也就是so库),将消息扔给so库去处理。从这个角度来说,Actor(so库),不过是一个消息处理器。当然,所有的Actor都可以用C语言来写,做成so库的形式。但是这样开发效率偏低,所以skynet提供了一个特殊的so库,即snlua.so库。它封装了一个lua虚拟机,当框架把消息扔给snlua.so处理的时候,snlua.so一甩手,就扔给了对应的l

消息系统 2017-10-12 发布
AD 友情赞助
17 浏览

01、Handler的那些事

HandlerPic.png版权声明:本文为博主原创文章,未经博主允许不得转载。PS:转载请注明出处作者:TigerChain地址:http://www.jianshu.com/p/73e5fd7eb7da本文出自TigerChain简书Android系列教程简介1、阅读对象本篇教程适合新手阅读,老手直接略过2、教程难度初级正文摘要:Handler在Android的作用主要是线程间通讯的,现在也有各种文章在讲解Handler的作用以及源码分析,但是必定这些都是别人自己的总结和整理,和自己总结还是有区别的,为了加深自己的记忆所以自己也来分析一下Handler以及它的小伙伴们。什么是Handler什么是Handler?再华丽的解释也不过是官方的解解释吧:先看官网上的一段话AHandlerallowsyoutosendandprocessMessageandRunnableobjectsassociatedwithathread'sM

消息系统 2017-10-13 发布
54 浏览

Kafka简介及基本原理与使用场景

ApacheKafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。现在很多开源分布式系统,例如Flume(数据实时分析),Storm(数据实时处理),Spark(内存数据处理),elasticsearch(全文检索)几种分布式系统的对比2017-05-05_095912.png上图介绍到的动态扩容,kafka目前是通过zookeeper来实现动态扩容的。zookeeper:一个提供分布式状态管理,分布式配置管理,分布式锁服务的集群。AMQP协议kafka借鉴AMQP协议进行开发基本概念消费者(Consumer):从消息队列中请求消息的客户端应用程序生产者(Producer):向Broker发布消息的客户端应用程序。AMQP服务器端(Broker):用于接收生产者发送的消息并将消息路由给服务器中队列。话题(Topic):是特定类型的消息流。消息是字节的有效负载(Payload

消息系统 2017-10-14 发布
15 浏览

RabbitMQ基础入门指南

1、背景1)选择RabbitMQ,而不是ActiveMQ/ZeroMQ/ApacheQpid的原因:(1)RabbitMQ难以置信的容易安装和使用。(2)除了Qpid外,RabbitMQ是唯一实现了AMQP标准的代理服务器。(3)正是由于Erlang,RabbitMQ集群不可思议的简单。(4)RabbitMQ比竞争对手更可靠,更能防止崩溃。2、安装和运行(CentOS7)1)由于RabbitMQ是采用Erlang编写的,因此需要先安装该语言库:[root@localhost~]#wgethttp://erlang.org/download/otp_src_19.1.tar.gz...[root@localhost~]#tar-zxvfotp_src_19.1.tar.gz...[root@localhost~]#cdotp_src_19.1/#若运行configure脚本时出现"Nocurseslibraryfunctionsfound"错误,则执行yumi

消息系统 2017-10-14 发布
AD 友情赞助
16 浏览

使用OpenCV、Kafka和Spark技术进行视频流分析

核心要点为了可靠且高效地处理大规模的视频流数据,需要有一个可扩展、能容错、松耦合的分布式系统;本文中的示例应用使用开源的技术来构建这样的系统,这些技术包括OpenCV、Kafka和Spark。另外,还可以使用AmazonS3或HDFS进行存储;该系统包含了三个主要的组件:视频流收集器(VideoStreamCollector)、流数据缓冲(StreamDataBuffer)以及视频流处理器(VideoStreamProcessor);视频流收集器需要与一个网络摄像机(IPcamera)集群协同工作,这些摄像机提供视频内容的实时流数据,并且还会使用OpenCV视频处理库把视频流转换为帧,将数据以JSON的格式传递给KafkaBroker,供流数据缓冲组件使用;视频流处理组件基于ApacheSpark构建,同样会使用OpenCV进行视频流数据的处理。在非结构化数据领域,技术带来了前所未有的爆炸性变化。移动设备、Web站点、社交媒体、科学仪器、卫星、IoT设备以及监控摄像头这样的数据源每秒钟都会产生大量的图片和视频。管理和有

消息系统 2017-10-16 发布
14 浏览

基于Kafka+Strom构建流式计算卖家日志系统

​作者介绍曾昌荣,来自京东商家研发部京麦平台组,2016年加入京东,从事商家开放平台相关工作。本文系作者原创投稿,未经DBAplus社群允许,不得转载和使用。本文要给大家分享的是我们如何去构建一个日志系统、用到了那些技术、为什么用这些技术,同时会讲述这个过程中遇到的问题及优化方法,希望能给你在实践中能够提供一些参考。前言最近在维护一个有关于日志的项目,这个项目是负责收集、处理、存储、查询京东卖家相关操作的日志,我们这里就叫它“卖家日志”。在日常的开发过程中,可能我们对日志这个词并不陌生,例如我们常接触到的log4j、slf4j等,这些日志工具通常被我们用来记录代码运行的情况,当我们的系统出了问题时,我们可以通过查看日志及时的定位问题的所在,从而快速地解决问题。今天我所讲的卖家日志,与这个有些许的不同,卖家日志是用来记录卖家对系统各个功能的操作情况,例如:张三这个商家对它的店铺的某款商品进行了价格的修改,这就会记录下一条日志在我们的系统当中,在这个系统中的部分信息我们是可以提供给商家、运营人员看的,从

消息系统 2017-10-16 发布
9 浏览

ActiveMQ——activemq的详细说明,queue、topic的区别(精选)

JMS中定义了两种消息模型:点对点(pointtopoint,queue)和发布/订阅(publish/subscribe,topic)。主要区别就是是否能重复消费。点对点:Queue,不可重复消费消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费、其它的则不能消费此消息了。当消费者不存在时,消息会一直保存,直到有消费消费发布/订阅:Topic,可以重复消费消息生产者(发布)将消息发布到topic中,同时有多个消息消费者(订阅)消费该消息。和点对点方式不同,发布到topic的消息会被所有订阅者消费。当生产者发布消息,不管是否有消费者。都不会保存消息Jms规范里的两种message传输方式Topic和Queue,两者的对比如下表():

消息系统 2017-10-16 发布
20 浏览

架构师之路-如何建立高可用消息中间件kafka

本文出自:架构师之路-如何建立高可用消息中间件kafkahttp://www.roncoo.com/article/detail/130255转载请注明如上出处,谢谢!Kafka一、熟悉kafkalServer-1broker其实就是kafka的server,因为producer和consumer都要去连它。Broker主要还是做存储用。lServer-2是zookeeper的server端,zookeeper的具体作用你可以去官网查,在这里你可以先想象,它维持了一张表,记录了各个节点的IP、端口等信息(以后还会讲到,它里面还存了kafka的相关信息)。lServer-3、4、5他们的共同之处就是都配置了zkClient,更明确的说,就是运行前必须配置zookeeper的地址,道理也很简单,这之间的连接都是需要zookeeper来进行分发的。lServer-1和Server-2的关系,他们可以放在一台机器上,也可以分开放,zookeeper也可以配集群。目的是防止某一台挂了。简单说下整个系统运行

消息系统 2017-10-16 发布
13 浏览

OKHttp源码解析(三)--中阶之线程池和消息队列

上篇文章已经说明了OKHttp有两种调用方式,一种是阻塞的同步请求,一种是异步的非阻塞的请求。今天主要是讲解的是异步的请求。其中涉及了Dispatcher这个类,其他的类基本已经在上篇文章介绍过了。所以本片文章的大体思路如下:1.线程池的理解2.Dispatcher类详解3.OKHttp的任务调度4.OKHttp调度的理解在讲解线程池和消息队列的时候有必要讲下线程池的基本概念一、线程池的理解(一)android中的异步任务android的异步任务一般都是用Thread+Handler或者AsyncTask来实现,其中笔者当初经历过各种各样坑,特别是内存泄漏,当初笔者可是相当的欲死欲仙啊!所以现在很少有开发者还在用这一套来做异步任务,现在一般都是Rxjava为主,当然还有自己自定义的异步任务框架(比如笔者),像RxJava都帮我们写好了对应场景的线程池,这是为什么?1、线程池的理解我对线程池的理解是有两个层次,一种是狭隘的,一种是广义的,那么咱们各自都说下(1)狭义上的线程池:线程池是一种多线程处理形式,处理过程中将任务添加到队列中

消息系统 2017-10-16 发布
14 浏览

阿里中间件RocketMQ顺利毕业 Apache顶级项目又添新成员

摘要:9月25日,Apache软件基金会官方宣布,阿里巴巴捐赠给Apache社区的开源项目RocketMQ从Apache社区正式毕业,成为Apache顶级项目(TLP)。ApacheRocketMQ是国内首个非Hadoop生态体系的顶级项目,作为阿里巴巴在开源社区努力的最新成果,在国际舞台华丽绽放,引起全球开源社区的广泛关注和积极评价。RocketMQ是阿里巴巴中间件技术部(Aliware)在2012年开源的第三代分布式消息中间件,以其高性能、低延时和高可靠的特性承载了近年来双十一交易峰值(2016年为17万笔/秒),在整个生产链路上都有着稳定和出色的表现。开源至今,RocketMQ已经被国内外数百家企业广泛使用。RocketMQ充分理解ApacheWay,持续发展和壮大社区生态,吸引了多位国内外Committer和PMCMember加入,经过团队半年多的努力,顺利毕业成为Apache顶级项目。随着ApacheRocketMQ在开源社区的发展,整个生态已经覆盖了电子商务、物联网、金融、大数据等众多领域,且具备了连接其它顶级开源生

消息系统 2017-10-16 发布
14 浏览

ActiveMQ 从零到最佳实践

最近一段时间想把自己在以前项目中用的技术总结出来比如nginx,redis比较实用的技术分享一下自己的心得体会供更多有求知欲望的朋友学习,当然自己的总结有一定的局限性,在总结这篇文章时我也查了很多资料,在这里我就先把ActiveMQ走一遍,随后一段时间会对nginx,redis进行详细的讲解ActiveMQ简介:ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMSProvider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。在学习之前我们先要知道一下几个问题ActiveMQ特性⒈多种语言和协议编写客户端。语言:Java,C,C++,C#,Ruby,Perl,Python,PHP。应用协议:OpenWire,StompREST,WSNotification,XMPP,AMQP⒉完全支持JMS1.1和J2EE1.4规范(持久化,XA消息,事务)⒊对Spring

消息系统 2017-10-17 发布
13 浏览

RabbitMQ两种集群模式配置管理

RabbitMQ集群的两种模式1)普通模式:默认的集群模式。2)镜像模式:把需要的队列做成镜像队列。普通模式:默认的集群模式RabbitMQ集群中节点包括内存节点、磁盘节点。内存节点就是将所有数据放在内存,磁盘节点将数据放在磁盘上。如果在投递消息时,打开了消息的持久化,那么即使是内存节点,数据还是安全的放在磁盘。那么内存节点的性能只能体现在资源管理上,比如增加或删除队列(queue),虚拟主机(vrtualhosts),交换机(exchange)等,发送和接受message速度同磁盘节点一样。一个集群至少要有一个磁盘节点。一个rabbitmq集群中可以共享user,vhost,exchange等,所有的数据和状态都是必须在所有节点上复制的,对于queue根据集群模式不同,应该有不同的表现。在集群模式下只要有任何一个节点能够工作,RabbitMQ集群对外就能提供服务。默认的集群模式,queue创建之后,如果没有其它policy,则queue就会按照普通模式集群。对于Queue来说,消息实体只存在于其中一个节点,A、B两个节点仅

消息系统 2017-10-17 发布
AD 友情赞助