基于 Teleport 的微服务框架 TP-Micro

Apache-2.0
Google Go 查看源码»
跨平台
2018-07-06
henrylee2cn

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的编解码类型

  • 支持插件扩展

  • 支持心跳机制

  • 日志信息详尽,支持打印输入、输出消息的详细信息(状态码、消息头、消息体)

  • 支持设置慢操作报警阈值

  • 支持自定义日志

  • 支持平滑关闭与更新

  • 支持推送

  • 支持的网络类型:tcptcp4tcp6unixunixpacket

  • 客户端支持断线后自动重连

  • 支持过载保护(断路器)

代码示例

  • 服务端

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 协议发布

的码云指数为
超过 的项目
加载中

评论(1)

henrylee2cn
henrylee2cn 软件作者
功能非常全

暂无资讯

暂无问答

我的 Cubieboard ARM 集群

这是我“开源中国”的第一篇博文,“Open Source”对我来说是个全新的世界,我喜欢在这里探险和冲浪。我在珠海学习嵌入式,入手的开发板是Cubieboard,在Cubieboard 开源社区的帮助下,我已经...

2013/08/20 13:48
547
0
python --int 对象

python 源码分析

2016/05/25 17:53
23
0
软件定时器算法

说明:软件定时器不是定时器,是应用于操作系统中的一种定时回调功能函数的算法。 算法结构:本软件定时器,包含一个链表,一个定时器任务。 void updateSystemTime(void)函数要在定时器溢出...

2017/05/04 23:31
161
0
短信中VB.NET编码PDU(二)

EMS——ConcatenatedShortMessage部分 编码EMS较SMS复杂,但每条EMS的基础还是SMS,所以我直接继承了SMS类。区别主要是要处理好TP_UD和IE。对于ConcatenatedShortMessage,由于其IE和TP_UDHL...

2015/11/02 16:48
10
0
短信部分——PDU简介及其格式

PDU格式中,各个字段的具体解析

2014/02/17 12:36
561
0
PDU的编码--EMS编码

编码EMS较SMS复杂,但每条EMS的基础还是SMS,所以我直接继承了 SMS类。区别主要是要处理好TP_UD和IE。对于ConcatenatedShortMessage,由于其IE和TP_UDHL占据了TP_UD的 部分空间,所以每条短信...

2016/01/06 17:21
17
0
PDU的编码--SMS编码

编码一个SMS一般需要如下的信息: TP_Data_Coding_SchemeTP_UD编码方式 TP_Destination_Address对方号码 TP_Message_Reference参考号码 TP_Status_Report_Request状态报告 TP_User_Data用户信...

2016/01/05 17:38
28
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部