組件分享之后端組件——基于Golang實(shí)現(xiàn)的以并行線程計(jì)算或分發(fā)到機(jī)器集群組件GLOW
背景
近期正在探索前端、后端、系統(tǒng)端各類常用組件與工具,對(duì)其一些常見的組件進(jìn)行再次整理一下,形成標(biāo)準(zhǔn)化組件專題,后續(xù)該專題將包含各類語言中的一些常用組件。歡迎大家進(jìn)行持續(xù)關(guān)注。
組件基本信息
- 組件:glow
- 開源協(xié)議:http://www.apache.org/licenses/LICENSE-2.0
內(nèi)容
本節(jié)我們分享一個(gè)基于Golang實(shí)現(xiàn)的以并行線程計(jì)算或分發(fā)到機(jī)器集群組件glow。類似于 Hadoop Map Reduce、Spark、Flink、Storm 等。
具體使用如下:
1、安裝
go get github.com/chrislusf/glow
go get github.com/chrislusf/glow/flow
2、使用案例
package main
import (
"flag"
"strings"
"github.com/chrislusf/glow/flow"
)
func main() {
flag.Parse()
flow.New().TextFile(
"/etc/passwd", 3,
).Filter(func(line string) bool {
return !strings.HasPrefix(line, "#")
}).Map(func(line string, ch chan string) {
for _, token := range strings.Split(line, ":") {
ch <- token
}
}).Map(func(key string) int {
return 1
}).Reduce(func(x int, y int) int {
return x + y
}).Map(func(x int) {
println("count:", x)
}).Run()
}
具體原理如下:

image.png
本文聲明:

88x31.png
知識(shí)共享許可協(xié)議
本作品由 cn華少 采用 知識(shí)共享署名-非商業(yè)性使用 4.0 國際許可協(xié)議 進(jìn)行許可。