Roc
π Roc is a rpc micro framework,it designed with go,and transport protocol by rsocket-go.
IT IS UNDER ACTIVE DEVELOPMENT, APIs are unstable and maybe change at any time until release of v1.0.0.
π Features
- Simple to use β¨
- Lightweight β¨
- High performance β¨
- Service discovery β¨
- Support websocket and socket same time β¨
- Support json or gogo proto when use rpc β¨
π± Quick start
GO111MODULE= on go get github.com/go -roc/roc/cmd/protoc-gen-roc
protoc --roc_out = plugins = roc:.*.proto
package main
import (
"github.com/go-roc/roc/_auxiliary/example/hello/app/api/api.hello/hello"
"github.com/go-roc/roc/_auxiliary/example/hello/proto/phello"
"github.com/go-roc/roc/rlog"
"github.com/go-roc/roc/service"
)
func main() {
s := service.New(
service.HttpAddress("0.0.0.0:9999"),
service.Namespace("api.hello"),
service.TCPAddress("0.0.0.0:8888"),
service.WssAddress("0.0.0.0:10000", "/hello"),
)
phello.RegisterHelloWorldServer(s.Server(), &hello.Hello{Client: s.Client()})
err := s.Run()
if err != nil {
rlog.Error(err)
}
}
package main
import (
"fmt"
"github.com/go-roc/roc/config"
_ "github.com/go-roc/roc/internal/etcd/mock"
)
func main() {
//new config use default option
err := config.NewConfig()
if err != nil {
panic(err)
}
const key = "test"
var result struct {
Name string `json:"name"`
Age int `json:"age"`
}
coverPublic(key, &result)
coverPrivate(key, &result)
}
//put key/value to etcd:
//go:generate etcdctl put configroc/v1.0.0/public/roc.test "{ "name":"roc", "age":18 }"
func coverPublic(key string, v interface{}) {
//simple public use
//the key is roc.test
err := config.DecodePublic(key, v)
if err != nil {
panic(err)
}
fmt.Println("------", v)
//output: ------ {roc 18}
}
//put key/value to etcd:
//go:generate etcdctl put configroc/v1.0.0/private/test "{ "name":"roc", "age":18 }"
func coverPrivate(key string, v interface{}) {
//the key is test
err := config.DecodePrivate(key, v)
if err != nil {
panic(err)
}
fmt.Println("------", v)
//output: ------ {roc 18}
}
ποΈ see more example for more help.
π« How to reach me and be a contributor ...
β¨ TODO β¨
- bench test
- sidecar
- more example
- more singleton tests
- generate dir
- command for request service
- sidecar service
- config service
- broker redirect request service
- logger service
- simple service GUI