异步通信

消息中间件ActiveMQ使用详解

六月ゝ 毕业季﹏ 提交于 2019-12-25 05:39:57
一、消息中间件的介绍 1、介绍 ​ 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数据交流,并基于 数据通信 来进行分布式系统的集成。 2、特点(作用): 应用解耦 异步通信 流量削峰 (海量)日志处理 消息通讯 3、应用场景 根据消息队列的特点,可以衍生出很多场景,或者说很多场景都能用到。下面举几个例子: 1)异步通信 ​ 注册时的短信、邮件通知,减少响应时间; 2)应用解耦 ​ 信息发送者和消息接受者无需耦合,比如调用第三方; 3)流量削峰 ​ 例如秒杀系统; 借鉴:https://www.cnblogs.com/yanfei1819/p/10615605.html 来源: CSDN 作者: 深拥不弃0924 链接: https://blog.csdn.net/qq_44746074/article/details/103686534

同步串口与异步串口

时光总嘲笑我的痴心妄想 提交于 2019-12-13 15:45:11
串口:是与并口相对应的一种接口,两者都是设备与设备之间通信的物理接口。 同步串口与异步串口:这里我们指的是串口的通信,通信双方是否同步。同步通信即收发双方交换数据是同步的,异步通信表示收发双方数据交换是异步的。 UART:通用异步收发器,异步通信的协议。规定好通信双方的波特率、数据长度、校验位、停止位等参数即可发送数据和接收数据。 同步通信:相较于异步通信,物理上多了一根时钟线,传输效率更高(去掉了开始位、校验位、停止位等冗余数据)。 时钟与数据是同步的,因此使用门控时钟,传输数据时有时钟输出,其他状态下无时钟输出(针对于数据的发送端)。 接收数据端口:首先要对接收到的数据及时钟进行滤波,具体是使用更高的时钟对数据和时钟进行3倍采样,3次采样结果一致便使用采样的数值。采样完时钟可以检测出时钟的上升沿和下降沿,用于数据的边沿同步。 数据格式:一般我们传输数字信号时,传输的数据需要打包。使用头+尾、头+长的模式。打包使数据传输时更高效,因为数据是串行输出的,接收方在判断到帧头到来后便把其后的数据进行串并转换和存储或其他处理。 来源: CSDN 作者: fpga_verilog_sky 链接: https://blog.csdn.net/fpga_verilog_sky/article/details/103525706

python asyncore异步通信

空扰寡人 提交于 2019-12-09 21:40:04
import asyncore import socket class Server(asyncore.dispatcher): def __init__(self, host, port): asyncore.dispatcher.__init__(self) self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.set_reuse_addr() self.bind((host, port)) print('Binding to', self.socket.getsockname()) self.listen(5) def handle_accept(self): sock, address = self.accept() print('Got a new client', address) self.sim_handler = Handler(sock=sock) class Handler(asyncore.dispatcher): def handle_write(self): self.send('hi'.encode()) def handle_read(self): print(self.recv(1024).decode('utf-8')) class Client(asyncore

RxJS异步通信之map、flatMap

你。 提交于 2019-12-07 19:04:31
let source1: string = Observable.range(1,4).map((item) => { return item; }); source1.subscribe((itam) => { console.log('return value: ' + item); }); return value:1 return value:2 return value:3 return value:4 let source2: string = Observable.range(1,4).flatMap((item) => { return Observable.of(item); }); source2.subscribe((itam) => { console.log('return value: ' + item); }); return value:1 return value:2 return value:3 return value:4 在RxJS中map和flatMap都可以对单个对象进行操作,最主要的区别在于返回的数据类型,map的返回就是原本的数据类型即可,而flatMap返回的是一个流数据,即要在数据返回是增加Observable的转换。 这里的return的单粒的,如果想直接返回一个数组,直接使用toArray()方法即可。 let source2

异步通信和同步通信的区别

僤鯓⒐⒋嵵緔 提交于 2019-12-04 18:21:41
我们都知道数据通讯就是两个通讯主体之间发送、接收数字信号。假设要发送以下数据:12,23,34,45,56,67,78,89。接收方要正确接收这些数据,就必须知道数据什么时候开始发送,什么时候结束,要不然,可能会将数据接收成22,33,44,55,66,77,88。 对于同步通讯协议,发送方在发送数据之前先发出一个特殊的电信号,让接收方准备好接收数据,然后发送方就将以上数据全部连续发出,发送完毕后,再发送一个特殊的电信号表示数据发送结束。我们可以用以下图表示同步信号通讯。 数据包 然后,接收方按照事先约定,即每两位一个数值,将数据包分成一个个数值。 对于异步通讯协议,发送方每发送一个数据都要发一“开始”标志,每个数据发送结束后都发出一个“结束”标志。用下图表示异步通讯信号: 因此,POS通讯中的同步、异步是两种不同的通讯协议,它是信号发送方和信号接收方的一种约定。通信过程中,同步信号的作用非常重要,尤其对于串行方式的数据通信。同步信号的作用简单讲有两个作用,1是“尺子”的作用,用于丈量一个比特的宽度;2是决定丈量的“起点”位置。收发双方必须采用相同的“尺子”,从相同的“起点”开始丈量数据线上的电平变化,才能保证数据通信的正确。 因此,任何方式的串行通信,同步的过程必须有,也就是说通信双方必须保持“同步”。 我们看最典型的SPI、I2C,在这两种方式中,都专门有一个CLK信号线

异步通信rabbitmq――消息重试

匿名 (未验证) 提交于 2019-12-03 00:27:02
目标: 准备: rejected - the message was rejected with requeue=false, expired - the TTL of the message expired; or maxlen - the maximum allowed queue length was exceeded. 这里,我们使用expired来实现。给消息设置TTL,到期后消息未被消费,则会变成dead messager,转发到dead letter exchange。 流程图: 实现: 1、创建三个exchange。没有特殊要求 2、创建三个queue。 clickQueue@retry作为重试队列,需要特殊处理: x-dead-letter-exchange: clickExchange x-dead-letter-routing-key: clickKey x-message-ttl: 30000 3、处理代码 4、x-death的使用:message在转换成dead letter时,会在其header里添加一个名为x-death的数组。数组元素就是一次dead lettering event的记录。包含count:消息几次变成了dead letter。 总结: 此处只是本人的拙见。如有更好的提议,欢迎拍砖。 文章来源: 异步通信rabbitmq——消息重试

asyncio异步通信

▼魔方 西西 提交于 2019-12-02 14:21:22
昨天在招聘网里,搜关于python就业职位,其中有一条招聘信息要求会掌握几个异步socket框架: 然后想了想既然学了socket,和异步,掌握一个异步sokcet库应该没什么问题吧。 asyncio:一个用来写并发编程的库 ========================================================官方文档===================================================================== https://docs.python.org/zh-cn/3/library/asyncio.html asyncio 是用来编写 并发 代码的库,使用 async/await 语法。 asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等。 asyncio 往往是构建 IO 密集型和高层级 结构化 网络代码的最佳选择。 asyncio 提供一组 高层级 API 用于: 并发地 运行 Python 协程 并对其执行过程实现完全控制; 执行 网络 IO 和 IPC ; 控制 子进程 ; 通过 队列 实现分布式任务; 同步 并发代码; 此外,还有一些 低层级 API 以支持 库和框架的开发者 实现: 创建和管理 事件循环 ,以提供异步 API

(学习笔记1)stm32f4USART中USB转串口通信

[亡魂溺海] 提交于 2019-11-30 18:15:22
初学stm32,初次接触USART串口通信。 对USART通信硬件原理的个人总结。从MCU(Micro Controller Unit,也就是ST芯片)出来的TTL电平经过电平转换芯片转化为USB电平,从而实现与PC的通信。 USART( Universal Synchronous/Asynchronous Receiver/Transmitter) 通用同步/异步串行接收/发送器。 这边只作异步通信说,异步通信与同步通信的主要区别区别是时钟,所以这边的SLCK是关闭的。USART总共有TX、RX、nRTS、nCTS、SCLK这5个外接引脚(框图中的SW_RX在内部,n表示低电平有效)。在学习与PC上位机通信时,是关闭硬件流控制模式的,所以异步通信只涉及到TX(Transmit)和RX(Receive)这两个引脚。 大致思路:数据由软件传给发送数据寄存器USART_DR(TRD),判断TC(Transmit complete,发送完成)是否置1。若置1,表示发送移位寄存器发送完成,发送数据寄存器中的数据发送到发送移位寄存器开始发送,判断TXE(Transmit data register empty,发送数据寄存器为空),读取下一个数据到TDR;若TC为0,则等待。TC置0由软件序列(读取USART_SR寄存器,然后写入USART_DR寄存器),也可以向该位写“”0“”实现

微服务设计笔记(6)—— 同步与异步通信方式

♀尐吖头ヾ 提交于 2019-11-30 06:13:15
(1)同步通信 同步通信指的是:调用远程服务后,必须等待服务响应。其本质是请求/响应模式。客户端发起请求,然后等待响应。 (2)异步通信 异步通信指的是:调用远程服务后,会直接返回。一般应用于运行时间较长的远程服务,也应用于需要快速响应的业务场景。 异步通信,也可以使用请求/响应模式。客户端注册一个回调地址,然后发起请求,当服务端响应后,会调用客户端所注册的回调地址。 异步通信,一般是采用订阅者模式。首先,服务端会订阅一些事件。然后客户端发布一个被订阅的事件,这些订阅者就会收到这个事件消息。这个模式就可以在不影响客户端的基础上,新增新的服务端。 (3)抉择 判定是否可以解决问题,来决定如何选择通信方式。可能会运行很长时间的、跨服务边界的部分,就应该采用异步通信方式。 来源: https://blog.csdn.net/deniro_li/article/details/101147656