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

码农软件 · 软件分类 · 微服务框架 · 2019-03-17 18:29:11

软件介绍

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

本文地址:https://codercto.com/soft/d/1565.html

算法(英文版•第4版)

算法(英文版•第4版)

[美] Robert Sedgewick、[美] Kevin Wayne / 人民邮电出版社 / 2016-3 / 129.00元

本书作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第4 版具体给出了每位程序员应知应会的50 个算法,提供了实际代码,而且这些Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了本书内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。一起来看看 《算法(英文版•第4版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具