如何用Go语言构建并行处理数据的排序管道?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1486个文字,预计阅读时间需要6分钟。
一、并行管道搭建:实现思路
二、归并排序:进行元素排序(节点)
三、进行合并元素排序(节点的节点)
一、并行管道搭建:总结下实现思路:
- 归并排序:进行集合元素排序(节点),并两两节点归并排序;每个节点元素要求有序的(排序),当然终点最小节点元数个数为1必是有序的;
- 节点:任务处理单元,归并排序节点是处理输出有序集合任务的单元;文件过大单台机排不了需要多台机集群;
- 根据粒度,单机版:单任务版每个节点可以是排序方法,并发版每个节点可以是一个线程/协程去处理(异步排序),集群版节点是一个主机;
- 单机版,不管并发还是非并发,节点采用的是内存共享数据;集群版节点则需要网络连接请求应答来共享数据;
- go语言异步数据传输通道通过channel实现的;
- 每个节点将处理的数据异步发送到各自channel中,等待一个主节点获取归并,集群版多了网络的数据传输(在并发版加上网络的接口)。
本文共计1486个文字,预计阅读时间需要6分钟。
一、并行管道搭建:实现思路
二、归并排序:进行元素排序(节点)
三、进行合并元素排序(节点的节点)
一、并行管道搭建:总结下实现思路:
- 归并排序:进行集合元素排序(节点),并两两节点归并排序;每个节点元素要求有序的(排序),当然终点最小节点元数个数为1必是有序的;
- 节点:任务处理单元,归并排序节点是处理输出有序集合任务的单元;文件过大单台机排不了需要多台机集群;
- 根据粒度,单机版:单任务版每个节点可以是排序方法,并发版每个节点可以是一个线程/协程去处理(异步排序),集群版节点是一个主机;
- 单机版,不管并发还是非并发,节点采用的是内存共享数据;集群版节点则需要网络连接请求应答来共享数据;
- go语言异步数据传输通道通过channel实现的;
- 每个节点将处理的数据异步发送到各自channel中,等待一个主节点获取归并,集群版多了网络的数据传输(在并发版加上网络的接口)。

