TP-Micro 介绍
TP-Micro 是一个基于 Teleport
定制的、简约而强大的微服务框架。
安装
go version > 1.9 go get -u -f -d github.com/xiaoenai/tp-micro/... cd $GOPATH/src/github.com/xiaoenai/tp-micro/cmd/micro go install
特性
支持服务自动发现
支持自定义服务链接选择器
支持负载均衡
支持多路复用IO及其连接池
支持自定义协议
支持自定义Body的编解码类型
支持插件扩展
支持心跳机制
日志信息详尽,支持打印输入、输出消息的详细信息(状态码、消息头、消息体)
支持设置慢操作报警阈值
支持自定义日志
支持平滑关闭与更新
支持推送
支持的网络类型:tcp、tcp4、tcp6、unix、unixpacket等
客户端支持断线后自动重连
支持过载保护(断路器)
代码示例
服务端
package main
import (
micro github.com/xiaoenai/tp-micro”
tp github.com/henrylee2cn/teleport”
)// Arg arg
type Arg struct {
A int
B int param:
}// P handler
type P struct {
tp.PullCtx
}// Divide divide API
func (p P) Divide(arg Arg) (int, *tp.Rerror) {
return arg.A / arg.B, nil
}func main() {
srv := micro.NewServer(micro.SrvConfig{
ListenAddress: ”:9090”,
})
srv.RoutePull(new(P))
srv.ListenAndServe()
}客户端
package main
import (
micro github.com/xiaoenai/tp-micro”
tp github.com/henrylee2cn/teleport”
)func main() {
cli := micro.NewClient(
micro.CliConfig{},
micro.NewStaticLinker(“:9090”),
)
defer cli.Close()type Arg struct {
A int
B int
}var result int
rerr := cli.Pull(“/p/divide”, &Arg{
A: 10,
B: 2,
}, &result).Rerror()
if rerr != nil {
tp.Fatalf(“%v”, rerr)
}
tp.Infof(“10/2=%d”, result)
rerr = cli.Pull(“/p/divide”, &Arg{
A: 10,
B: 0,
}, &result).Rerror()
if rerr == nil {
tp.Fatalf(“%v”, rerr)
}
tp.Infof(“test binding error: ok: %v”, rerr)
}
开源协议
Micro 项目采用商业应用友好的 Apache2.0 协议发布
TP-Micro 官网
https://github.com/xiaoenai/tp-micro
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。