組件分享之后端組件——基于Golang實(shí)現(xiàn)的以并行線程計(jì)算或分發(fā)到機(jī)器集群組件GLOW

組件分享之后端組件——基于Golang實(shí)現(xiàn)的以并行線程計(jì)算或分發(fā)到機(jī)器集群組件GLOW

背景

近期正在探索前端、后端、系統(tǒng)端各類常用組件與工具,對(duì)其一些常見的組件進(jìn)行再次整理一下,形成標(biāo)準(zhǔn)化組件專題,后續(xù)該專題將包含各類語言中的一些常用組件。歡迎大家進(jìn)行持續(xù)關(guān)注。

組件基本信息

內(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)行許可。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容