YoMo

Build your own IoT & Edge Realtime Computing system easily, engaging 5G technology

是一个开源项目,方便构建属于您自己的IoT和边缘计算平台。基于YoMo,可快速完成微服务架构的工业App的开发,您的工业互联网平台将会充分发挥5G带来的低延时、大带宽的高通率优势。

🚀 3分钟构建工业微服务 Quick Start

1. 创建工程,并引入yomo Create a go project and import yomo

% mkdir yomotest && cd yomotest

% go mod init yomotest

% go get -u github.com/yomorun/yomo

2. 编写插件 Start writing your first plugin echo.go

package main

// 引入yomo
import (
    "github.com/yomorun/yomo/pkg/yomo"
)

func main() {
    //// 运行该Plugin,监听:4241端口,数据会被YoMo Edge发送过来
    // yomo.Run(&EchoPlugin{}, "0.0.0.0:4241")

    // 开发调试时的方法,处于联网状态下时,会自动连接至 yomo.run 的开发服务器,连接成功后,
    // 该Plugin会每2秒收到一条Observed()方法指定的Key的Value
    yomo.RunDev(&EchoPlugin{}, "127.0.0.1:4241")
}

// EchoPlugin 是一个YoMo Plugin,会将接受到的数据转换成String形式,并再结尾添加内容,修改
// 后的数据将流向下一个Plugin
type EchoPlugin struct{}

// Handle 方法将会在数据流入时被执行,使用Observed()方法通知YoMo该Plugin要关注的key,参数value
// 即该Plugin要处理的内容
func (p *EchoPlugin) Handle(value interface{}) (interface{}, error) {
    return value.(string) + "✅", nil
}

// Observed 返回一个string类型的值,该值是EchoPlugin插件关注的数据流中的Key,该数据流中Key对应
// 的Value将会以对象的形式被传递进Handle()方法中
func (p EchoPlugin) Observed() string {
    return "name"
}

// Name 用于设置该Plugin的名称,方便Debug等操作
func (p *EchoPlugin) Name() string {
    return "EchoPlugin"
}

3. 运行 Run plugin

  1. Open a new termial, run go run echo.go

🌟 YoMo架构和亮点

yomo-arch

YoMo关注在:

YoMo的优势:

🦸 成为YoMo开发者 Contributing

Github(English): github.com/yomorun/yomo

码云Gitee(中文社区): gitee.com/yomorun/yomo

社区守则:Code of Conduct

代码规范:Contributing Rules

🐛 提交Bug

Report bug: https://github.com/yomorun/yomo/issues

🧙 Contact Maintainer Team

yomo@cel.la