topic

STOMP

你。 提交于 2020-02-15 11:11:01
简介 直接使用WebSocket(或SockJS)就很类似于使用TCP套接字来编写Web应用。因为没有高层级的线路协议(wire protocol),因此就需要我们定义应用之间所发送消息的语义,还需要确保连接的两端都能遵循这些语义。 ​ 就像HTTP在TCP套接字之上添加了请求-响应模型层一样,STOMP在WebSocket之上提供了一个基于帧的线路格式(frame-based wire format)层,用来定义消息的语义。 ​ 与HTTP请求和响应类似,STOMP帧由命令、一个或多个头信息以及负载所组成。例如,如下就是发送数据的一个STOMP帧: >>> SEND transaction:tx-0 destination:/app/marco content-length:20 {"message":"Marco!"} ​ 在这个例子中,STOMP命令是send,表明会发送一些内容。紧接着是三个头信息:一个表示消息的的事务机制,一个用来表示消息要发送到哪里的目的地,另外一个则包含了负载的大小。然后,紧接着是一个空行,STOMP帧的最后是负载内容。 服务端实现 启用STOMP功能 ​ STOMP 的消息根据前缀的不同分为三种。 如下: 以 /app 开头的消息都会被路由到带有@MessageMapping 或 @SubscribeMapping 注解的方法中; 以/topic 或

Flink Connectors 介绍与 Kafka Connector

时间秒杀一切 提交于 2020-02-15 08:45:32
文章目录 1. Streaming Connectors 预定义的 source 和 sink Boundled connectors Apache Bahir 中的连接器 异步 IO 2. Flink Kafka Connector 2.1 Flink Kafka Consumer 1)反序列化 2)消费起始位置设置 3)topic 和 partition 动态发现 4)commit offset 方式 5)Timestamp Extraction/Watermark 生成 2.2 Flink Kafka Producer 1)Producer 写出时的 Partition 分区 2)Producer 容错 3. Q&A 1. Streaming Connectors Connector 的作用就相当于一个连接器,连接 Flink 计算引擎跟外界存储系统。 目前常用的 Connector 有以下几种: 预定义的 source 和 sink 基于文件的 source 和 sink // 从文本文件中读取数据 env . readTextFile ( path ) ; // 以文本的形式读取该文件中的内容 env . readFile ( fileInputFormat , path ) ; // 将结果已文本格式写出到文件中 DataStream . writeAsText (

Kafka简介及安装部署

耗尽温柔 提交于 2020-02-14 23:17:04
Kafka概述 1、什么是Kafka 在流式计算中,Kafka一般用来缓存数据,Storm通过消费Kafka的数据进行计算。 1)Apache Kafka是一个开源消息系统,由Scala写成。是由Apache软件基金会开发的一个开源消息系统项目。 2)Kafka最初是由LinkedIn公司开发,并于2011年初开源。2012年10月从Apache Incubator毕业。该项目的目标是为处理实时数据提供一个统一、高通量、低等待的平台。 3)Kafka是一个分布式消息队列。Kafka对消息保存时根据Topic进行归类,发送消息者称为Producer,消息接受者称为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)称为broker。 4)无论是kafka集群,还是consumer都依赖于zookeeper集群保存一些meta信息,来保证系统可用性。 2、为什么需要消息队列 1)解耦:   允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 2)冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的"插入-获取-删除"范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。 3)扩展性:

RabbitMQ交换机

北慕城南 提交于 2020-02-14 23:15:24
1、交换机属性 交换机有以下属性: Name :交换机名称 Type :交换机类型 direct、topic、fanout、headers Durability :是否需要持久化,true为持久化 Auto Delete :当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange Internal :当前Exchange是否用于RabbitMQ内部使用,默认为False Arguments :扩展参数,用于扩展AMQP协议,定制化使用 2、直连交换机Direct Exchange(完全匹配路由key) 所有发送到Direct Exchange的消息会被转发到RouteKey中指定的Queue 注意:Direct模式可以使用RabbitMQ自带的Exchange:default Exchange,所以不需要将Exchange进行任何绑定(binding)操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃; 消费端代码: package com.ue.exchange.direct; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import

四则运算出题3

我只是一个虾纸丫 提交于 2020-02-14 17:36:39
1、题目要求: 在之前自动出题程序的基础之上,添加新的功能: ①能判断用户的输入答案是否正确,正确与否,给出提示,若错误,显示正确答案; ② 能处理四则运算的混合算式。 2、实现思路: 出题思路不变,对原来程序生成的算式文本,进行读取每一个算式并进行计算,若输入的答案与结果相等,即计算正确。 3、思路整理(实现步骤): 出题步骤不变,每一行读取生成的算式文本,将其中的算式作为char数组保存,将char数组用栈保存,利用栈来决定计算顺序并计算出结果。 4、源代码: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 7 namespace siz 8 { 9 class Program 10 { 11 static int top; 12 static int x1, y1; 13 static int size = 256; 14 static string [] s=new string[size]; 15 16 static double jisuan_ma(char [] str) 17 { 18 int l; 19 double right1; 20 int k=0; 21 char ww; 22

Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库

▼魔方 西西 提交于 2020-02-13 18:44:56
原文: Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 前言     在 .Net Core 2.2中 Microsoft.AspNetCore.App 默认内置了EntityFramework Core 包,所以在使用过程中,我们无需再从 NuGet 仓库单独应用 EFCore 包;本文并不打算深入的介绍 EFCore 的各种使用方式、原理解析,本文重点在于解决让初学者在10分钟内快速使用上 EFCore 的问题。 1. Code First 方式 EFCore 支持 Code First 方式,这个特性允许开发人员基于业务实体模型创建数据库 1.1 首先创建一个 Asp.Net Core WebApi 项目 Ron.MSSQL,如下 1.2 创建业务实体模型文件夹 Models,添加两个业务实体 Topic,Post public class Topic { public int Id { get; set; } public string Title { get; set; } public string Content { get; set; } public DateTime CreateTime { get; set; } public virtual ICollection<Post> Posts { get; set; } }

Flume基础学习

孤街醉人 提交于 2020-02-13 10:20:32
Flume是一款非常优秀的日志采集工具。支持多种形式的日志采集,作为apache的顶级开源项目,Flume再大数据方面具有广泛的应用 首先需要在Flume的解压目录中conf文件夹中将flume-env.sh.templete更改未flume.env.sh 并修改jdk的位置 Source 我们可以从Avro,NetCat。Http,TailDir。我们在Java开发中通常都是使用的log4j等日志工具进行日志按天存储,所以我们重点关注下tailDir Source Taildir Source 在Flume1.7之前如果想要监控一个文件新增的内容,我们一般采用的source 为 exec tail,但是这会有一个弊端,就是当你的服务器宕机重启后,此时数据读取还是从头开始,这显然不是我们想看到的! 在Flume1.7 没有出来之前我们一般的解决思路为:当读取一条记录后,就把当前的记录的行号记录到一个文件中,宕机重启时,我们可以先从文件中获取到最后一次读取文件的行数,然后继续监控读取下去。保证数据不丢失、不重复。 在Flume1.7时新增了一个source 的类型为taildir,它可以监控一个目录下的多个文件,并且实现了实时读取记录保存的断点续传功能。 但是Flume1.7中如果文件重命名,那么会被当成新文件而被重新采集。 Channel Memory Channel Memory

RocketMQ入门及部署

扶醉桌前 提交于 2020-02-12 22:49:07
RocketMQ入门及部署 RocketMQ整体架构 如上图所示,整体可以分成4个角色,分别是:Producer,Consumer,Broker以及NameServer; 1.NameServer 可以理解为是消息队列的协调者,Broker向它注册路由信息,同时Client向其获取路由信息,如果使用过Zookeeper,就比较容易理解了,但是功能比Zookeeper弱; NameServer本身是没有状态的,并且多个NameServer直接并没有通信,可以横向扩展多台,Broker会和每一台NameServer建立长连接; 2.Broker Broker是RocketMQ的核心,提供了消息的接收,存储,拉取等功能,一般都需要保证Broker的高可用,所以会配置Broker Slave,当Master挂掉之后,Consumer然后可以消费Slave; Broker分为Master和Slave,一个Master可以对应多个Slave,Master与Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为0表示Master,非0表示Slave; 3.Producer 消息队列的生产者,需要与NameServer建立连接,从NameServer获取Topic路由信息,并向提供Topic服务的Broker Master建立连接

pandas向表格中循环写入数据

北城余情 提交于 2020-02-12 07:51:19
pandas向表格中循环写入多行数据 import pandas as pd def list_topic(total_num, str1): """ 生成多个主题 :param total_num: 总的主题数量 :param str1: 主题名称中的固定字母,如A1,A2,A3,A4.... :return: 返回主题列表 """ list_topic = [] num = 1 for j in range(total_num): topic_name = str1 + str(num) list_topic.append(topic_name) num += 1 return list_topic def dir_name(dir_num, str1): """ 生成多个主题 :param total_num: 总的主题数量 :param str1: 目录名称中的固定字母,如A1,A2,A3,A4.... :return: 返回目录列表 """ list_dir = [] num = 1 for j in range(dir_num): topic_name = str1 + str(num) list_dir.append(topic_name) if j != 0: # 每隔100,对目录加1,比如第1个100,目录名都为A1,第2个100,目录名都为A2 if j %

kafka不为人知的一面-Kafka streams

荒凉一梦 提交于 2020-02-11 22:46:43
kafka不为人知的一面-Kafka streams 1、为什么要有kafka stream 当前已经有非常多的流式处理系统,最知名且应用最多的开源流式处理系统有Spark Streaming和Apache Storm。Apache Storm发展多年,应用广泛,提供记录级别的处理能力,当前也支持SQL on Stream。而Spark Streaming基于Apache Spark,可以非常方便与图计算,SQL处理等集成,功能强大,对于熟悉其它Spark应用开发的用户而言使用门槛低。另外,目前主流的Hadoop发行版,如Cloudera和Hortonworks,都集成了Apache Storm和Apache Spark,使得部署更容易。 既然Apache Spark与Apache Storm拥用如此多的优势,那为何还需要Kafka Stream呢?主要有如下原因。 第一,Spark和Storm都是流式处理框架,而Kafka Stream提供的是一个基于Kafka的流式处理类库。框架要求开发者按照特定的方式去开发逻辑部分,供框架调用。开发者很难了解框架的具体运行方式,从而使得调试成本高,并且使用受限。而Kafka Stream作为流式处理类库,直接提供具体的类给开发者调用,整个应用的运行方式主要由开发者控制,方便使用和调试。 第二