基于 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

网页设计

网页设计

顾群业 / 山东美术 / 2007-1 / 42.00元

网页设计,是指网页设计者以既有的技术和艺术知识为基础,依照设计目的和要求,自觉地对网页的构成元素进行艺术构思,创造出艺术化、人性化的网站界面。如今,网页设计也发展成为一种新的艺术形式,是设计艺术的重要组成部分。优秀的网页设计,不仅要有鲜明的主题、统一的风格,还要求内容与形式的高度统一。一起来看看 《网页设计》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码