主流的数据处理技术(专为边缘计算领域打造的低时延流式数据处理框架YoMo)

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个基于GO开发的低延时流式边缘计算框架——yomo。

主流的数据处理技术(专为边缘计算领域打造的低时延流式数据处理框架YoMo)(1)

YoMo 是一个为边缘计算领域打造的低时延流式数据处理框架,基于 QUIC 协议通讯,以 Functional Reactive Programming 为编程范式,构建可靠、安全的低时延实时计算应用,挖掘 5G 潜力,释放实时计算价值。

特性
  • 基于QUIC协议进行数据传输
  • 每个数据包都基于TLSv1.3安全策略
  • 在5G/WiFi-6网络下保证数据传输的稳定性和吞吐量
  • 使用 Edge-Mesh Native 架构更贴近终端用户
  • 利用无服务器服务来实现事件驱动和弹性
  • 只需几行代码即可构建应用程序和微服务
  • 自主研发的 y3-codec 优化解码性能比实时编解码器更快
  • 基于Rx的反应式流计算,提高处理和分析数据的速度和准确性
YoMo适合用来
  • 物联网/工业物联网/AIoT
  • 开发对延迟敏感的应用程序
  • 处理高网络延迟和数据包丢失的情况
  • 通过流式编程处理连续的高频数据
  • 使用流式 Serverless 架构构建复杂的系统
快速入门

1 先决条件

确保已安装 Go 编译运行环境。

2 安装 CLI

Binary(推荐):

$ curl -fsSL "https://bina.egoist.sh/yomorun/cli?name=yomo" | sh

或者从源代码编译:

$ go install github.com/yomorun/cli/yomo@latest

验证 CLI 是否成功安装:

$ yomo -V YoMo CLI version: v0.1.8

3 创建一个 Serverless 应用

$ yomo init yomo-app-demo ⌛ Initializing the Serverless app... ✅ Congratulations! You have initialized the serverless function successfully. ℹ️ You can enjoy the YoMo Serverless via the command: ℹ️ DEV: yomo dev -n Noise yomo-app-demo/app.go ℹ️ PROD: First run source application, eg: go run example/source/main.go Second: yomo run -n yomo-app-demo yomo-app-demo/app.go $ cd yomo-app-demo

YoMo CLI 会自动创建带有以下内容的 app.go 文件:

package main import ( "context" "encoding/json" "fmt" "time" "github.com/yomorun/yomo/rx" ) // NoiseData represents the structure of data type NoiseData struct { Noise float32 `json:"noise"` // Noise value Time int64 `json:"time"` // Timestamp (ms) From string `json:"from"` // Source IP } var echo = func(_ context.Context, i interface{}) (interface{}, error) { value := i.(*NoiseData) value.Noise = value.Noise / 10 rightNow := time.Now().UnixNano() / int64(time.Millisecond) fmt.Println(fmt.Sprintf("[%s] %d > value: %f ⚡️=%dms", value.From, value.Time, value.Noise, rightNow-value.Time)) return value.Noise, nil } // Handler will handle data in Rx way func Handler(rxstream rx.Stream) rx.Stream { stream := rxstream. Unmarshal(json.Unmarshal, func() interface{} { return &NoiseData{} }). Debounce(50). Map(echo). StdOut() return stream } func DataTags() []byte { return []byte{0x33} }

4 编译并运行

从 terminal 运行 yomo dev,可以看到:

$ yomo dev ℹ️ YoMo serverless function file: app.go ⌛ Create YoMo serverless instance... ⌛ YoMo serverless function building... ✅ Success! YoMo serverless function build. ℹ️ YoMo serverless function is running... ℹ️ Run: /Users/xiaojianhong/Downloads/yomo-app-demo/sl.yomo 2021/06/07 12:00:06 Connecting to zipper dev.yomo.run:9000 ... 2021/06/07 12:00:07 ✅ Connected to zipper dev.yomo.run:9000 [10.10.79.50] 1623038407236 > value: 1.919251 ⚡️=-25ms [StdOut]: 1.9192511 [10.10.79.50] 1623038407336 > value: 11.370256 ⚡️=-25ms [StdOut]: 11.370256 [10.10.79.50] 1623038407436 > value: 8.672209 ⚡️=-25ms [StdOut]: 8.672209 [10.10.79.50] 1623038407536 > value: 4.826996 ⚡️=-25ms [StdOut]: 4.826996 [10.10.79.50] 1623038407636 > value: 16.201773 ⚡️=-25ms [StdOut]: 16.201773 [10.10.79.50] 1623038407737 > value: 13.875483 ⚡️=-26ms [StdOut]: 13.875483

示意图

主流的数据处理技术(专为边缘计算领域打造的低时延流式数据处理框架YoMo)(2)

—END—

开源协议:Apache2.0

开源地址:https://github.com/yomorun/yomo

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页