go 流处理器思路

作者: Best博客 | 来源:发表于2021-01-28 15:32 被阅读0次

流水线编程,场景适合的话能够让我们的代码结构更加清晰

还有更多使用方式,可以直接参考go-zero文档 https://github.com/tal-tech/zero-doc/blob/main/doc/fx.md


package main

import (
    "fmt"
    "os"
    "os/signal"
    "syscall"
    "time"

    "github.com/tal-tech/go-zero/core/fx"
)

func main() {
    ch := make(chan int)

    go inputStream(ch)
    go outputStream(ch)

    c := make(chan os.Signal, 1)
    signal.Notify(c, syscall.SIGTERM, syscall.SIGINT)
    <-c
}

func inputStream(ch chan int) {
    count := 0
    for {
        ch <- count
        time.Sleep(time.Millisecond * 500)
        count++
    }
}

func outputStream(ch chan int) {
    fx.From(func(source chan<- interface{}) {  //生产资源
        for c := range ch {
            source <- c
        }
    }).Walk(func(item interface{}, pipe chan<- interface{}) {  //并发处理上一步生产的资源并写入pipe给下游继续加工(并发处理资源的work个数可以通过配置控制)
        count := item.(int)
        pipe <- count
    }).Filter(func(item interface{}) bool {  //串行的过滤资源
        itemInt := item.(int)
        if itemInt%2 == 0 {
            return true
        }
        return false
    }).ForEach(func(item interface{}) {  //串行的收集结果资源
        fmt.Println(item)
    })
}

相关文章

  • go 流处理器思路

    流水线编程,场景适合的话能够让我们的代码结构更加清晰 还有更多使用方式,可以直接参考go-zero文档 https...

  • golang学习之旅1

    GO简介 开始跟着七米老师学习Go语言啦!Go代表的是一种趋势,一种未来!Go于2009年发布,当时多核处理器已经...

  • go环境以及kubernetes的go-client介绍

    1、go语言介绍: (1)Go语言是谷歌2009发布的第二款开源编程语言。 (2)Go语言专门针对多处理器系统应用...

  • Gin-监听代码变化自动重启Server

    思路是监听.go文件变化,然后重启进程即可。 example.go 运行

  • Go 语言基础

    Go 语言 2009年诞生,Go/Golang 是云计算时代的 C 语言。专门对多处理器系统应用的编程做了优化。媲...

  • 全局异常处理

    首先,处理思路,嗯对,就是想想: 其次,创建全局异常处理器,开写 最后,Springmvc中配置异常处理器 ok!...

  • 为什么很多企业转向了 Golang? Java, Python,

    Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编...

  • Kafka Stream动态构建拓扑图

    一、介绍 通过Kafka Stream编写一个或多个的计算逻辑的处理器拓扑。其中处理器拓扑是一个由流(线)连接的流...

  • GOlang学习笔记(踩坑记)1,安装与资源

    在安装之间,我们先了解Golang Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应...

  • Go并发

    简介 Go语言调度器在操作系统之上,将操作系统的线程与语言运行时的逻辑处理器绑定,并在逻辑处理器上运行gorout...

网友评论

    本文标题:go 流处理器思路

    本文链接:https://www.haomeiwen.com/subject/dwtxtltx.html