box

package module
v1.1.18 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2020 License: MIT Imports: 12 Imported by: 0

README

box

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


Feature

当节点被Box代理会获得以下特性

  • 服务治理

包含服务发现,健康检查,负载均衡,自动选主等功能。

  • 链路追踪

提供基于jaeger的链路追踪功能,另外还具有慢调用追踪,慢调用日志等功能。

  • 路由
  • RPC调用
  • 错误处理

Quick Start
  1. 注册服务
func main() {

	cfg := box.Config{
		Name:          "calculate",
		Tracing:       false,
		Mode:          box.DEBUG,
		ConsulAddress: consul,
		Type:          box.SERVICE,
		LogPath:       "logs/",
	}
	b, err := box.NewWithConfig(cfg)
	if err != nil {
		log.Fatalln(err)
	}
	defer b.Close()
	
	b.Service().Regist("addition", func(ctx context.Context, in []byte) (out []byte, err error)){
		// todo ...
	}

	b.Run()
}

  1. 编写Dockerfile

这里需要注意的是,服务发现主要依赖于这里Tag的设置SERVICE_TAGS=box, Coordinate节点将会自动的接管包含box Tag的节点。

FROM alpine
COPY ./calculate_linux /tmp/app/
WORKDIR /tmp/app
ENV SERVICE_TAGS=box,calculate
# 1201 rpc port
EXPOSE 1201
ENTRYPOINT ./calculate_linux $0 $@
  1. 运行Docker

新创建的节点将会自动注册到中心,如果已有同类型calculate节点存在,则会按slave模式运行,如果是第一个节点,则会按master模式运行。同时当master节点下线,则每一个slave节点都会尝试选举,成功的节点会变成新的master节点。

calculate 将会成为路由的一个主干节点, 在程序运行过程中, client发送过来的/calculate/* 请求,都会被均衡的路由到这个节点上。

docker build -t box-calculate .
docker run --rm -d -p 1401:1201/tcp box-calculate:latest -consul http://192.168.50.138:8500

Documentation

Index

Constants

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

	// Logger 日志
	Logger = "logger"

	// Redis redis
	Redis = "redis"

	// Linker 链接器
	Linker = "linker"

	// Service 服务管理器
	Service = "service"

	// Caller 远程调用RPC
	Caller = "caller"

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

	// Election 选举器
	Election = "election"

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

Variables

This section is empty.

Functions

func Call added in v1.1.17

func Call(parentCtx context.Context, boxName string, serviceName string, token string, body []byte) (res *brpc.RouteRes, err error)

Call 远程调用

func Close added in v1.1.17

func Close()

Close 释放box

func Compose added in v1.1.17

func Compose(nlist []NodeCompose) error

Compose 编排工具

func Regist added in v1.1.17

func Regist(serviceName string, fc service.ServiceFunc)

Regist 注册服务

func Run added in v1.1.17

func Run()

Run 运行box

Types

type Box added in v1.1.3

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

Box 框架

type Node added in v1.1.17

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

Node box框架中的功能节点

type NodeCompose added in v1.1.17

type NodeCompose struct {
	Ty  string
	Cfg interface{}
}

NodeCompose 节点

Directories

Path Synopsis
cache

Jump to

Keyboard shortcuts

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