topic

剖析nsq消息队列(一) 简介及去中心化实现原理

谁都会走 提交于 2019-11-29 00:24:27
分布式消息队列 nsq ,简单易用,去中心化的设计使 nsq 更健壮, nsq 充分利用了 go 语言的 goroutine 和 channel 来实现的消息处理,代码量也不大,读不了多久就没了。后期的文章我会把 nsq 的源码分析给大家看。 主要的分析路线如下 分析 nsq 的整体框架结构,分析如何做到的无中心化分布式拓扑结构,如何处理的单点故障。 分析 nsq 是如何保证消息的可靠性,如何保证消息的处理,对于消息的持久化是如何处理和扩展的。 分析 nsq 是如何做的消息的负载处理,即如何把合理的、不超过客户端消费能力的情况下,把消息分发到不同的客户端。 分析 nsq 提供的一些辅助组件。 这篇帖子,介绍 nsq 的主体结构,以及他是如何做到去中心化的分布式拓扑结构,如何处理的单点故障。 几个组件是需要先大概说一下 nsqd 消息队列的主体,对消息的接收,处理和把消息分发到客户端。 nsqlookupd nsq 拓扑结构信息的管理者,有了他才能组成一个简单易用的无中心化的分布式拓扑网络结构。 go-nsq nsq 官方的go语言客户端,基本上市面上的主流编程语言都有相应的客户端 在这里 还有可视化的组件 nsqadmin 和一些工具像 nsq_to_file 、 nsq_stat 、等等,这些在后期的帖子里会介绍 使用方式 直连方式 nsqd 是独立运行的

Kafka简明教程

不想你离开。 提交于 2019-11-28 23:58:43
作者:柳树之 www.jianshu.com/p/7b77723d4f96 Kafka是啥?用Kafka官方的话来说就是: Kafka is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companies. 大致的意思就是,这是一个实时数据处理系统,可以横向扩展、高可靠,而且还变态快,已经被很多公司使用。 那么什么是实时数据处理系统呢?顾名思义,实时数据处理系统就是数据一旦产生,就要能快速进行处理的系统。 对于实时数据处理,我们最常见的,就是消息中间件了,也叫MQ(Message Queue,消息队列),也有叫Message Broker的。 这篇文章,我将从消息中间件的角度,带大家看看Kafka的内部结构,看看它是如何做到横向扩展、高可靠的同时,还能变态快的。 为什么需要消息中间件 消息中间件的作用主要有两点: 解耦消息的生产和消费。 缓冲。 想象一个场景,你的一个创建订单的操作,在订单创建完成之后,需要触发一系列其他的操作,比如进行用户订单数据的统计、给用户发送短信、给用户发送邮件等等,就像这样:

kafka的通俗理解

谁说胖子不能爱 提交于 2019-11-28 22:48:13
消息中间件是基于什么需求设计的? 既然是消息中间件,那么一定会有发送消息和接收消息 应用程序往消息中间件发送消息,那么一定会通过网络请求,为了保证中间件的性能,网络请求应该需要用到NIO 牛逼一点的中间件,应该会支持跨语言,不应该只为Java而设计 消息是通过什么形式发送的呢,目前比较流行的应该还是序列化和反序列化吧 生产者发送完消息后如何知道自己是否发送成功了,消费者消费完消息后,中间件如何知道该消息是否真的被消费了,这应该会设计一个确认机制吧 消息存储在哪里,如何储存的,是存内存还是磁盘 术语 kafak主题(topic) 每条消息的发送其实都应该设计一个类别,比如新闻包含军事、娱乐等。而topic其实就是一个类别,也可以理解为topic就是一个数据库的某张表。生产者需要发送消息到topic=test上,就好比需要将一批数据保存到test表里面。 kafka分区(Partition) 一个topic会包含多个分区,如果topic是一张表,那么partition就是表分区。Oracle有表分区的概念,如果数据量非常大的时候,表分区可以提高查询性能。kafka的分区也是为了提高性能。分区其实就是物理上的概念,它在物理上被拆分成多个文件。 kafka消费者组 消费者在消费消息时,它会存在一个组里面(如果指定消费者组,那么就存在于指定组,不指定,就在默认组里面)

kafka入门介绍

▼魔方 西西 提交于 2019-11-28 22:41:08
作者:半兽人 链接: https://www.orchome.com/5 来源:OrcHome 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 简单说明kafka: https://mp.csdn.net/postedit/100123446 Kafka作为一个分布式的流平台,这到底意味着什么? 我们认为,一个流处理平台具有三个关键能力: 发布和订阅消息(流),在这方面,它类似于一个消息队列或企业消息系统。 以容错的方式存储消息(流)。 在消息流发生时处理它们。 什么是kafka的优势?它主要应用于2大类应用: 构建实时的流数据管道,可靠地获取系统和应用程序之间的数据。 构建实时流的应用程序,对数据流进行转换或反应。 要了解kafka是如何做这些事情的,让我们从下到上深入探讨kafka的能力。 首先几个概念: kafka作为一个集群运行在一个或多个服务器上。 kafka集群存储的消息是以topic为类别记录的。 每个消息(也叫记录record,我习惯叫消息)是由一个key,一个value和时间戳构成。 kafka有四个核心API: 应用程序使用 Producer API 发布消息到1个或多个topic(主题)。 应用程序使用 Consumer API 来订阅一个或多个topic,并处理产生的消息。 应用程序使用 Streams API充当一个流处理器

我大概知道他在说什么了,是对内存单元的竞争访问吧。Python有GIL,在执行伪码时是原子的。但是伪码之间不保证原子性。 UDP丢包,你是不是做了盲发?没有拥塞控制的情况下,确实会出现丢包严重的情况。你先看看发送速率,还有是否带有拥塞控制。

最后都变了- 提交于 2019-11-28 22:22:13
我大概知道他在说什么了,是对内存单元的竞争访问吧。Python有GIL,在执行伪码时是原子的。但是伪码之间不保证原子性。 UDP丢包,你是不是做了盲发?没有拥塞控制的情况下,确实会出现丢包严重的情况。你先看看发送速率,还有是否带有拥塞控制。 https://groups.google.com/forum/#!topic/python-cn/Vivn--4LfGM 来源: https://www.cnblogs.com/yuanjiangw/p/11430179.html

KafKa集群安装详细步骤

▼魔方 西西 提交于 2019-11-28 21:59:22
最近在使用Spring Cloud进行分布式微服务搭建,顺便对集成KafKa的方案做了一些总结,今天详细介绍一下KafKa集群安装过程: 1. 在根目录创建kafka文件夹(service1、service2、service3都创建) [root@localhost /]# mkdir kafka 2.通过Xshell上传文件到service1服务器:上传kafka_2.9.2-0.8.1.1.tgz到/software文件夹 3.远程copy将service1下的/software/kafka_2.9.2-0.8.1.1.tgz到service2、service3 [root@localhost software]# scp -r /software/kafka_2.9.2-0.8.1.1.tgz root@192.168.2.212:/software/ [root@localhost software]# scp -r /software/kafka_2.9.2-0.8.1.1.tgz root@192.168.2.213:/software/ 3.copy /software/kafka_2.9.2-0.8.1.1.tgz到/kafka/目录(service1、service2、service3都执行) [root@localhost software]# cp

kafka学习(一)初识kafka

大憨熊 提交于 2019-11-28 20:36:59
本文借鉴: 再过半小时,你就能明白kafka的工作原理了 (特此感谢!) 一、简介   kafka是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,最大的特性就是可以实时的处理大量数据以满足各种需求场景。 二、消息队列通信的模式 1、点对点模式   如上图所示,点对点模式通常是基于拉取或者轮询的消息传送模型,这个模型的特点是发送到队列的消息被一个且只有一个消费者进行处理。生产者将消息放入消息队列后,由消费者主动的去拉取消息进行消费。点对点模型的的优点是消费者拉取消息的频率可以由自己控制。 存在缺陷: 消费者端无法感知 消息队列是否有消息需要消费 ,所以在消费者端需要额外的线程去监控 。 2、发布订阅模式   如上图所示,发布订阅模式是一个基于消息送的消息传送模型,改模型可以有多种不同的订阅者。生产者将消息放入消息队列后,队列会将消息推送给订阅过该类消息的消费者(类似微信公众号)。由于是消费者被动接收推送,所以无需感知消息队列是否有待消费的消息!但是consumer1、consumer2、consumer3由于机器性能不一样,所以处理消息的能力也会不一样,而消息队列却无法感知消费者消费的速度!所以推送的速度成了发布订阅模模式的一个问题!假设三个消费者处理速度分别是8M/s、5M/s、2M/s

MQTT简单介绍与实现

邮差的信 提交于 2019-11-28 20:33:44
1. MQTT 介绍 它是一种 机器之间通讯 machine-to-machine (M2M)、物联网 Internet of Things (IoT)常用的一种轻量级消息传输协议 适用于网络带宽较低的场合 包含发布、订阅模式,通过一个代理服务器(broker),任何一个客户端(client)都可以订阅或者发布某个主题的消息,然后订阅了该主题的客户端则会收到该消息 1.1 消息主题 发布消息或者订阅消息都要选定一个消息主题,消息主题可以任意定制,类似文件系统,用 “/” 进行分隔,例如主题为 /a/b/c/d 的消息 客户端可以使用完全字符匹配消息,也可以使用通配符进行消息匹配 通配符 + :替换任意单个层级。比如订阅 /a/b/c/d、/a/+/c/d 、+/+/+/+ 主题的消息即可收到主题为 /a/b/c/d 的消息,而 b/+/c/d 、 +/+/+ 不会匹配 通配符 # :匹配任意层级,只能用于末尾, #、a/# 可以匹配上面的主题消息 长度为 0 的主题层级也是允许的。比如发布主题为 a//topic 的消息,客户端可以用 a/+/topic 进行匹配。/a/topic 的主题用 +/a/topic、#、/# 可以匹配。 1.2 服务质量(Quality of Service,QoS) MQTT 定义了三种客户端与代理服务器之间消息到达的难度 0:broker

MQTT的使用介绍

妖精的绣舞 提交于 2019-11-28 20:33:18
之前项目中使用到了mqtt,刚开始用着用着都不知道是干啥的,后来百度了一下: MQTT MQTT基于订阅者模型架构,客户端如果互相通信,必须在同一订阅主题下,即都订阅了同一个topic,客户端之间是没办法直接通讯的。订阅模型显而易见的好处是群发消息的话只需要发布到topic,所有订阅了这个topic的客户端就可以接收到消息了。 发送消息必须发送到某个topic,重点说明的是不管客户端是否订阅了该topic都可以向topic发送了消息,还有如果客户端订阅了该主题,那么自己发送的消息也会接收到。 MQTT特点 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。这一点很类似于XMPP,但是MQTT的信息冗余远小于XMPP 对负载内容屏蔽的消息传输 使用TCP/IP提供网络连接。主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN。这两种版本由于基于不同的连接方式,优缺点自然也就各有不同了 三种消息传输方式QoS: 0代表“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。 1代表“至少一次”,确保消息到达,但消息重复可能会发生。 2代表“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中

MQTT介绍与使用

最后都变了- 提交于 2019-11-28 20:33:03
参考自: https://www.cnblogs.com/sxkgeek/p/9140180.html 目录 一、MQTT简介 二、特性 三、实现方式   四、MQTT的搭建(ubuntu) 五、MQTT权限配置 六、MQTT实现(Java语言) 正文   物联网是新一代信息技术的重要组成部分,也是“信息化”时代的重要发展阶段。其英文名称是:“Internet of things(IoT)”。顾名思义,物联网就是物物相连的互联网。这有两层意思:其一,物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络;其二,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信,也就是物物相息。物联网通过智能感知、识别技术与普适计算等通信感知技术,广泛应用于网络的融合中,也因此被称为继计算机、互联网之后世界信息产业发展的第三次浪潮。   而在物联网的应用上,对于信息传输,MQTT是一种再合适不过的协议工具了。 回到顶部 一、MQTT简介   MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的轻量级协议,该协议构建于TCP/IP协议之上,MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销