README.md 3.2 KB
Newer Older
F
fanweixiao 已提交
1 2 3 4
# YoMo

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

5 6
![Go](https://github.com/yomorun/yomo/workflows/Go/badge.svg)

F
fanweixiao 已提交
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
是一个开源项目,方便构建属于您自己的IoT和边缘计算平台。基于YoMo,可快速完成微服务架构的工业App的开发,您的工业互联网平台将会充分发挥5G带来的低延时、大带宽的高通率优势。

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

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

```bash
go get -u github.com/yomorun/yomo
```

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

```rust
package main

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

func main() {
	// 运行该Plugin,监听:4241端口,数据会被YoMo Edge发送过来
29
	// yomo.Run(&EchoPlugin{}, "0.0.0.0:4241")
F
fanweixiao 已提交
30 31
	// 开发调试时的方法,处于联网状态下时,会自动连接至 yomo.run 的开发服务器,连接成功后,
	// 该Plugin会没2秒收到一条Obseved()方法指定的Key的Value
32
	yomo.RunDev(&EchoPlugin{}, "localhost:4241")
F
fanweixiao 已提交
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
}

// 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

59
1. Open a new termial, run `go run echo.go`
F
fanweixiao 已提交
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94

## 🌟 YoMo架构和亮点

![yomo-arch](https://yomo.run/yomo-arch.png)

### YoMo关注在:

- 工业互联网领域
	- 在IoT设备接入侧,需要<10ms的低延时实时通讯
	- 在智能设备侧,需要在边缘侧进行大算力的AI执行工作
- YoMo包含两部分:
	- `yomo-edge`: 部署在企业内网,负责接收设备数据,并按照配置,依次执行各个`yomo-plugin`
	- `yomo-plugin`: 可以部署在企业私有云、公有云及`yomo-edge-server`

### YoMo的优势:

- 全程基于Quic协议传输数据,使用UDP协议替代TCP协议后,大幅提升了传输的稳定性和高通率
- 自研的`yomo-codec`优化了数据解码性能
- 全程基于Stream Computing模型,并简化面向Stream编程的复杂度

## 🦸 成为YoMo开发者 Contributing

Github:[github.com/yomorun/yomo](github.com/yomorun/yomo)

社区守则:[Code of Conduct](github.com/yomorun/yomo/blob/master/CODE_OF_CONDUCT.md)

代码规范:[Contributing Rules](github.com/yomorun/yomo/blob/master/CONTRIBUTING.md)

## 🐛 提交Bug

Report bug: [https://github.com/yomorun/yomo/issues](https://github.com/yomorun/yomo/issues/new?assignees=&labels=bug&template=bug_report.md&title=%5BBUG%5D)

## 🧙 Contact Maintainer Team

[yomo@cel.la](yomo@cel.la)