yomo

module
v0.5.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 25, 2020 License: Apache-2.0

README ยถ

YoMo Go

YoMo is an open-source Streaming Serverless Framework for building Low-latency Edge Computing applications. Built atop QUIC Transport Protocol and Functional Reactive Programming interface. makes real-time data processing reliable, secure, and easy.

More info at ๐Ÿฆ–[https://yomo.run]

็ฎ€ไฝ“ไธญๆ–‡

๐Ÿš€ Getting Started

1. Install CLI
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/yomorun/install/HEAD/install.sh)"
2. Create your serverless app
yomo init yomo-demo && cd $_

You will see the following message:

(10:20:26 ~/Downloads)โ”€โ”€> yomo init yomo-demo && cd $_
2020/12/25 10:20:26 โœ… Congratulations! You have initialized the serverless app successfully.
2020/12/25 10:20:26 ๐ŸŽ‰ You can enjoy the YoMo Serverless via the command: yomo dev

CLI will automatically create the app.go:

package main

import (
	"context"
	"fmt"
	"time"

	"github.com/yomorun/yomo/pkg/rx"
)

var printer = func(_ context.Context, i interface{}) (interface{}, error) {
	value := i.(float32)
	fmt.Println("serverless get value:", value)
	return value, nil
}

// Handler will handle data in Rx way
func Handler(rxstream rx.RxStream) rx.RxStream {
	stream := rxstream.
		Y3Decoder("0x10", float32(0)).
		AuditTime(100 * time.Millisecond).
		Map(printer).
		StdOut()

	return stream
}
3. Build and run
  1. Run yomo dev from the terminal. you will see the following message:
(10:21:48 ~/yomo-demo)โ”€โ”€> yomo dev
2020/12/25 10:21:48 Building the Serverless Function File...
2020/12/25 10:21:49 โœ… Listening on 0.0.0.0:4242
serverless get value: 81.24497
[StdOut]:  81.24497
serverless get value: 100.879654
[StdOut]:  100.879654

Congratulations! You have done your first YoMo application.

๐ŸŽฏ Focuses on computings out of data center

  • Latency-sensitive applications.
  • Networking situation with packet loss or high latency.
  • Handling continuous high frequency generated data with stream-processing.
  • Building Complex systems with Streaming-Serverless architecture.

๐ŸŒŸ Why YoMo

  • Based on QUIC (Quick UDP Internet Connection) protocol for data transmission, which uses the User Datagram Protocol (UDP) as its basis instead of the Transmission Control Protocol (TCP); significantly improves the stability and throughput of data transmission. Especially for cellular networks like 5G.
  • A self-developed yomo-codec optimizes decoding performance. For more information, visit its own repository on GitHub.
  • Based on stream computing, which improves speed and accuracy when dealing with data handling and analysis; simplifies the complexity of stream-oriented programming.
  • Secure-by-default from transport protocol.

๐Ÿฆธ Contributing

First off, thank you for considering making contributions. It's people like you that make YoMo better. There are many ways in which you can participate in the project, for example:

  • File a bug report. Be sure to include information like what version of YoMo you are using, what your operating system is, and steps to recreate the bug.
  • Suggest a new feature.
  • Read our contributing guidelines to learn about what types of contributions we are looking for.
  • We have also adopted a code of conduct that we expect project participants to adhere to.

๐Ÿคน๐Ÿปโ€โ™€๏ธ Feedback

Any questions or good ideas, please feel free to come to our Discussion. Any feedback would be greatly appreciated!

License

Apache License 2.0

Directories ยถ

Path Synopsis
cmd
internal
cmd
pkg
rx

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL