box

module
v1.1.15 Latest Latest
Warning

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

Go to latest
Published: Apr 16, 2020 License: MIT

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

Directories

Path Synopsis
cache

Jump to

Keyboard shortcuts

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