stream和channel的应用
前言
最近遇到stream,channel越来越多了,只是知道了表面的意思,但是深层的东西还是很懵懂。
通道
通道可以被监听,如通信通道被窃听,比如旁路监听。
通道可以接受信息,我们称为接收通道。
通道可以发送信息,我们称为发送通道。
对于接收通道来说,信息来自于来源通道(即发送通道)
通道可以被阻塞,阻塞不一定是坏的,阻塞可以是公交车等待乘客上车,是为了更高的上座率,在总体上达到更高的效率。
通道阻塞又和多路径,并发有关。
通道可以被劫持,一般来说通道是从A到B,一旦C在通道某个点控制了通道的流量,强行使通道流量转变方向或者对流量的内容进行了操作,这就是在通道中进行流量劫持。也可以称为通道劫持,流量劫持。
通道可以分为文件通道,socket通道
socket通道又和服务器响应模型有关
流
消息通过通道传递
动态的消息构成了流
编程语言
Golang
stream在编程语言中,比如go语言中有通道,流应该是流过通道的。go语言中专门有channel
这个概念。在golang
中似乎channel
是用来并发的。
C++
C++中,有>>
或<<
这种符号。里面还有文件流的概念。
区块链
联盟链
超级账本Fabric最先在联盟链中引入了通道这个概念,Fabric定义了链、Peer、通道、共识服务的概念。链代表了账本和对应的共识服务。一个Peer可以拥有多个逻辑账本,并且可以参与多条链。通道是将Peer连接共识服务的虚拟通信方式。共识服务既是可信的与链无关的公共服务。
通道与权限控制相关。类似于小密圈,每个通道像一个专属VIP通道,不同的通道有不同的权限。联盟链相比于公链一个比较大的差别就是引入了权限控制。
通道在联盟链中用于数据隔离。
智能合约地址流
在以太坊,比特币种,转账也可以构成一股首尾相接的流。