braid

package module
v1.1.21 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 11, 2020 License: MIT Imports: 11 Imported by: 0

README

braid

轻量的微服务框架,通过compose.yml文件可以将braid提供的微服务组件轻易聚合到server上。

Codacy Badge drone codecov

注:当前v1.1.x版本为原型版本

组件
  • Service 服务组件,提供服务的注册和路由功能

    用户只需调用braid.Regist接口即可将自己提供的服务注册到中心

  • Election 选举组件, 提供自动选举功能

    在运行期自动进行选举策略,保证在多个同名节点中有一个主节点和多个从节点 当节点因为任何原因不在提供服务后,会自动选举出新的主节点。

  • Linker 链接组件,维护各个节点之间的链接关系

    当这个组件生效后,在进行服务查找时,调用关系将被缓存。在第二次执行同样的请求时不需要再通过服务查找。 且在服务下线或者不可用时,链接将被自动移除。

  • Caller 远程调用

    当服务函数通过接口braid.Regist进行过注册,则可以通过call进行远程调用 访问基于rpc,并且在braid中它将被自动的负载均衡到同名节点中 外部或者内部的程序只需按指定的url规则既可进行访问 braid.Call("/login/guest", in) out

  • Tracer 分布式追踪

    提供基于jaeger的分布式追踪服务,同时支持慢查询 即便采样率非常低,只要有调用超出设置时间 #SlowSpanLimit# #SlowRequestLimit#,这次调用也必然会被打印。

Quack Start

编写一个简易的login服务 braid_compose.yml

name : login
mode : debug
tracing : false

depend :
    consul_addr : http://127.0.0.1:8900

install : 
    log :
        open : true
        path : /var/log/login
        suffex : .sys
    service :
        open : true

main.go

composeFile, err := ioutil.ReadFile("braid_compose.yml")
if err != nil {
    fmt.Println(err)
}

conf := &braid.ComposeConf{}
err = yaml.Unmarshal([]byte(composeFile), conf)
if err != nil {
    log.Fatalln(err)
}

err = braid.Compose(*conf, braid.DependConf{
		Consul: consulAddr,
		Redis:  redisAddr,
		Jaeger: jaegerAddr,
	})
if err != nil {
    log.Fatalln(err)
}

braid.Regist("guest", func(ctx context.Context, in []byte) (out []byte, err error) {
    // login.guest
    return nil, nil
})
braid.Run()

ch := make(chan os.Signal)
signal.Notify(ch, syscall.SIGTERM, syscall.SIGINT)
<-ch

braid.Close()

一些完整的样例

Coordinate Gateway

Documentation

Index

Constants

View Source
const (
	// Balancer 负载均衡
	Balancer = "balancer"

	// Logger 日志
	Logger = "logger"

	// Redis redis
	Redis = "redis"

	// Register rpc服务
	Register = "register"

	// RPC 远程调用RPC
	RPC = "rpc"

	// Discover 探索发现节点
	Discover = "discover"

	// Election 选举器
	Election = "election"

	// Tracer 链路追踪
	Tracer = "tracer"
)

Variables

This section is empty.

Functions

func AppendNode added in v1.1.14

func AppendNode(name string, nod interface{})

AppendNode 将功能节点添加到braid中

func Call

func Call(parentCtx context.Context, nodeName string, serviceName string, token string, body []byte) (out []byte, err error)

Call 远程调用

func Close

func Close()

Close 释放

func Compose

func Compose(compose ComposeConf, depend DependConf) error

Compose 编排工具

func IsMaster added in v1.1.6

func IsMaster() (bool, error)

IsMaster 当前节点是否为主节点

func Regist

func Regist(serviceName string, fc register.RPCFunc)

Regist 注册服务

func Run

func Run()

Run 运行

Types

type Braid added in v1.1.3

type Braid struct {
	Nodes map[string]interface{}
}

Braid 框架

type ComposeConf added in v1.1.3

type ComposeConf struct {
	Name    string `yaml:"name"`
	Mode    string `yaml:"mode"`
	Tracing bool   `yaml:"tracing"`

	Install []string `yaml:"install"`

	Config struct {
		LogPath   string `yaml:"logger_path"`
		LogSuffex string `yaml:"logger_suffex"`

		RegisterListenPort int `yaml:"register_listen_port"`

		ElectionLockTick   int `yaml:"election_lock_tick"`
		ElectionRefushTick int `yaml:"election_refush_tick"`

		RPCDiscoverInterval int `yaml:"rpc_discover_interval"`
		RPCPoolInitNum      int `yaml:"rpc_pool_init_num"`
		RPCPoolCap          int `yaml:"rpc_pool_cap"`
		RPCPoolIdle         int `yaml:"rpc_pool_idle"`

		TracerProbabilistic float64 `yaml:"tracer_probabilistic"`
		TracerSlowReq       int     `yaml:"tracer_slow_req"`
		TracerSlowSpan      int     `yaml:"tracer_slow_span"`
	}
}

ComposeConf braid 编排结构

type DependConf added in v1.1.6

type DependConf struct {
	Consul string `yaml:"consul_addr"`
	Redis  string `yaml:"redis_addr"`
	Jaeger string `yaml:"jaeger_addr"`
}

DependConf braid 需要依赖的服务地址配置

type Node

type Node interface {
	Init(interface{}) error
	Run()
	Close()
}

Node braid框架中的功能节点

Directories

Path Synopsis
cache
service
rpc

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL